我有一个这样的xml,我想要使用XSL文件在“title”中定义的属性。
即使我更改元素
,我想要检索该值XML:
<catalog>
<cd>
<title att="abce" att2="false">Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
</catalog>
我尝试了这种方法来获得att值
<xsl:variable name="outermostElementName" select="catalog/cd/title/attribute::att"/>
但这仅限于此XML,我希望它是genric
有什么办法吗?
答案 0 :(得分:1)
鉴于您当前的 xsl:variable ,我认为您可以使用以下其中一项来更通用
<xsl:variable name="outermostElementName" select="catalog/*/title/@att" />
或
<xsl:variable name="outermostElementName" select="//title/@att" />
第一个假定根元素始终称为目录。第二个不依赖于祖先节点,但会在XML中的任何级别选择 title 元素。
答案 1 :(得分:0)
您希望实现的通用性由XSLT模板匹配模式提供。
你可以简单地拥有:
<xsl:template match="title/@att">
<!-- Your processing here -->
</xsl:template>
并且只要<xsl:apply-templates select="expression"/>
指令expression
选择title/@att
属性,就会选择上面的模板进行此属性节点的处理。
这不依赖于任何其他外部环境。