XSLT访问子元素以检索父元素

时间:2013-11-26 01:46:40

标签: xslt xpath xslt-1.0

以下是我的以下xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>price</th>
      </tr>
      <xsl:for-each select="library/book/authors/author[first='Harry'and last='Potter'] ">

      <tr>
        <td><xsl:value-of select="title"/></td>
        <td><xsl:value-of select="price"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
 </html>
</xsl:template>
</xsl:stylesheet>

下面是我的XSL样式表

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>price</th>
      </tr>
      <xsl:for-each select="library/book/authors/author[first='Harry'and last='Potter'] ">

      <tr>
        <td><xsl:value-of select="title"/></td>
        <td><xsl:value-of select="price"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

我无法显示标题和价格,因为它们是父元素,我给了我的子元素条件。我需要显示有关我父母元素的信息。

2 个答案:

答案 0 :(得分:0)

您可以使用“../”访问XPath表达式中的父节点。例如:

<xsl:value-of select="../../title"/>
<xsl:value-of select="../../price"/>

答案 1 :(得分:0)

在这种情况下,我倾向于建议您使用谓词,以便for-eachbook元素而不是author元素进行操作:

<xsl:for-each select="library/book[authors/author[first='Harry'and last='Potter']] ">

这说“选择至少有一位名叫哈利波特的作者的所有书籍元素。”