我正在嘗試使用XSL將兩個XML文件轉換爲HTML。我有一切工作,但我有一個問題。其中一個XML文件包含我從中提取的各種信息。文件中沒有任何名稱空間聲明,但我需要訪問的節點是名稱空間的前綴。我最初的修復是將名稱空間添加到根節點,但是我發現我無法做到這一點,因爲這些文件無法修改。將XML導入到根節點上沒有名稱空間的XSL中
如果我離開的命名空間的時候,我得到了以下的Firefox:
XML Parsing Error: prefix not bound to a namespace
的命名空間應該是(但在源XML不存在):
xmlns:prop="http://www.blank.com/prop"
xmlns:item="http://www.blank.com/item"
怎麼辦我解決這個問題?
XML:
<?xml version="1.0" encoding="UTF-8"?>
<collection>
<prop:id>123</prop:id>
<document>
<item:name>Document</item:name>
</document>
</collection>
XSL: (既不元素工作價值的的)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:variable name="propsPath" select="test_Props.xml"/>
<xsl:variable name="props" select="document($propsPath)" />
<xsl:template match="/">
<html><body><div>
<xsl:value-of select="$props/collection/*[local-name() = 'id']"/>
<xsl:value-of select="$props/collection/prop:id"/>
</div></body></html>
</xsl:template>
</xsl:stylesheet>
如果您的輸入使用前綴而不將它們綁定到名稱空間,那麼它不是一個格式良好的XML文檔,並且不能由XSLT處理。 –