我有一長串xml文件,它們可能有不同的編碼。我想瀏覽所有文件並打印它們的編碼。在XML標題中打印編碼屬性只是第一步。 (下一步,一旦我瞭解如何獲得訪問編碼屬性將要使用的編碼屬性來測試,如果是這樣的預期編碼。)用XSL打印XML文件中的編碼屬性
這是怎麼輸入XML文件可能看起來像:
<?xml version="1.0" encoding="iso-8859-1"?>
<Resource Name="text1" Language="de">
<Text>
</Text>
</Resource>
<?xml version="1.0" encoding="utf-8"?>
<Resource Name="file2" Language="ko">
<Text>
</Text>
</Resource>
xsl已被減少到最小但仍然沒有任何成功。我認爲我無法通過這種方式來匹配XML標題。但是,我怎樣才能匹配XML標頭中的東西?
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<body>
<xsl:value-of select="@encoding"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
哦,我明白了...我懷疑XML prolog在某種程度上是特殊的。如果使用多種語言的文件,我正在使用文檔函數來處理長列表。列表中大多數文件的「正常」編碼應該是「iso-8859-1」,但是有時例如波蘭文或羅馬尼亞文件也可以得到這種編碼。然後這個文件需要額外檢查,因爲在這個過程中可能會損壞一些字符。因此,對於這些文件,最好儘可能使用UTF-8。 – Gunilla
@Gunilla:你的意思是說這些文件被編碼爲UTF-8,但是有一個不同的編碼序言?你可以做的最好的是預處理你的文件列表,並簡單地刪除序言(只是刪除第一行),如果序言不存在,作爲默認編碼是UTF-8或UTF-16(區別在於可以從BOM中自動確定)。 – Abel
好主意!如果所有文件默認編碼爲UTF-8(如果prolog不存在),則不會破壞字符。對於那些我知道的文件/語言將轉到需要iso-8859-1編碼的目標系統,可以使用transform 。我認爲這將簡化這些文件的維護並降低錯誤風險。非常感謝你! –
Gunilla