我正在嘗試調試與xpath相關的問題。我在我的XSLT中創建了一個變量$ MetaData,用於分配一個xml文檔,但由於某種原因,foreach循環無法找到它的子項,我無法進入foreach循環。XSLT無法找到每個的XPATH
XSLT:
<!-- language: lang-xslt -->
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
version="1.0"
xmlns="http://www.w3.org/TR/xhtml1/strict"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:variable name="_MetaData">
<MetaData>
<EmployeeId>1233</EmployeeId>
<EmployeeName>abcd</EmployeeName>
</MetaData>
</xsl:variable>
<xsl:variable name="MetaData" select="msxsl:node-set($_MetaData)"></xsl:variable>
<xsl:template match="*|@*">
<xsl:copy>
<xsl:copy-of select="@*" />
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name()='MetaDataTag']">
<xsl:copy>
<MetaData VocabularyOwner="acme.com" Vocabulary="MetaData">
<xsl:for-each select="$MetaData//MetaData/*">
<xsl:element name="Occurrence">
<xsl:attribute name="Id">
<xsl:value-of select="local-name(.)"/>
</xsl:attribute>
<xsl:attribute name="Value">
<xsl:value-of select="string(.)"/>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</MetaData>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
XML:
<?xml version="1.0" encoding="utf-8" ?>
<Envelope>
<MetaDataTag />
</Envelope>
如果我刪除的xmlns的xmlns = 「http://www.w3.org/TR/xhtml1/strict」 命名空間,一切似乎都工作正常,我能夠進入循環。 我不知道如何解決此問題,而不刪除xmlns =「http://www.w3.org/TR/xhtml1/strict」命名空間。