动态获取xml元素的路径

时间:2012-02-17 10:54:35

标签: xml xslt

我有一个这样的xml,我想要使用XSL文件在“title”中定义的属性。

即使我更改元素

,我想要检索该值
  • 书籍目录
  • cd with book

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

有什么办法吗?

2 个答案:

答案 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属性,就会选择上面的模板进行此属性节点的处理。

这不依赖于任何其他外部环境。