Найти положение родительского узла с помощью xpath

Как получить позицию родительского узла в полном документе с помощью xpath?

скажем, у меня есть следующий xml:

<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
  <cd>
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <country>UK</country>
    <company>CBS Records</company>
    <price>9.90</price>
    <year>1988</year>
  </cd>
</catalog>

и у меня есть XSLT для преобразования его в HTML, который выглядит следующим образом (только фрагмент):

<xsl:template match="/">
<html>
  <body>  
  <xsl:apply-templates/>  
  </body>
  </html>
</xsl:template>

<xsl:template match="cd">
  <p>
    <xsl:number format="1. "/><br/>
    <xsl:apply-templates select="title"/>  
    <xsl:apply-templates select="artist"/>
  </p>
</xsl:template>

<xsl:template match="title">
  <xsl:number format="1" select="????" /><br/>
  Title: <span style="color:#ff0000">
  <xsl:value-of select="."/></span>
  <br />
</xsl:template>

Что написать вместо ???? чтобы получить позицию родительского тега cd в документе. Я пробовал много выражений, но ничего не работает. Может вообще неправильно делаю.

  1. <xsl:number format="1" select="catalog/cd/preceding-sibling::..[position()]" />
  2. <xsl:number format="1" select="./parent::..[position()]" /><br/>
  3. <xsl:value-of select="count(cd/preceding-sibling::*)+1" /><br/>

Я интерпретирую 2nd как выбор родительской оси текущего узла, а затем указываю позицию родителя текущего узла. Почему это не работает? Как правильно это сделать.

К вашему сведению :Я ожидаю, что код будет печатать позицию родительского тега cd текущего тега заголовка при обработке.

Пожалуйста, может кто-нибудь сказать мне, как это сделать.

9
задан Harshdeep 30 June 2012 в 09:29
поделиться