我试图使用xslt从xml获取少量标签的值。 我的list.xml:
<a>
<na:Data xmlns:na="http://some_site.com#" Ref="http://another_site.com"
Key="value">
<b>
<c>some_c_attrib</c>
<d>some_d_attrib</d>
<e>some_e_attrib</e>
<f>some_f_attrib</f>
<g>some_g_attrib</g>
</b>
<h>
<i>some_i_attrib</i>
<j>some_j_attrib</j>
</h>
</na:Data>
<da:Newtag xmlns:da="http://new_site.com">
<k name="http://new_new_site.com"/>
</da:Newtag>
</a>
我的list.xsl:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="http://some_site.com#"
exclude-result-prefixes="my">
<xsl:output method="html" encoding="UTF-8" />
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="/a/my:Data/my:e">
<h1><xsl:value-of select="f" /></h1>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我得到的输出是:
<html>
<body>
<h1/>
</body>
</html>
我希望输出为:
<html>
<body>
<h1>some_f_attrib</h1>
</body>
</html>
同样我也想获得c,d,e等的属性值。名称空间正在创建一些问题。没有命名空间,我可以访问属性值。我想我在选择语句的每个和每个值都出错了。
由于
答案 0 :(得分:1)
有两个问题。
f
元素是b
的孩子,而不是e
。 e
的孩子,e
元素也没有绑定到命名空间,并且您的XPath正在尝试解决my:e
。 将for-each中的XPath调整为:
<xsl:for-each select="/a/my:Data/b">
<h1><xsl:value-of select="f" /></h1>
</xsl:for-each>