child : select « XSLT stylesheet « XML






child


File: Data.xml

<wine grape="A">
  <winery>B</winery>
  <year>1998</year>
  <prices>
    <list>13.99</list>
    <discounted>11.99</discounted>
    <case>143.50</case>
  </prices>
</wine>
File: Transform.xslt


<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">
  <xsl:template match="wine">
    <wine vintage="{child::year}">
      <xsl:apply-templates select="product" />
      <category>
        <xsl:value-of select="@grape" />
      </category>
      <xsl:apply-templates select="price" />
    </wine>
  </xsl:template>

  <xsl:template
    match="@*|node()|processing-instruction()|comment()">
    <xsl:copy>
      <xsl:apply-templates
        select="@*|node()|processing-instruction()|comment()" />
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

Output:

<?xml version="1.0" encoding="UTF-8"?><wine vintage="1998"><category>A</category></wine>

 








Related examples in the same category

1.Parent and attribute
2.select="../@attribute"
3.Get value from tag with {}
4.Node selection by level
5.Select Node by index
6.Select attribute value and output to a list
7.context position and context size
8.select with if then else
9.select="document('')/*/book:category[@code=current()/@category]/@desc"
10.select distinct values
11.Select one from the target value list
12.select="@*" (at)
13.Select one tag from a list of tags
14.select="employees/employee[2]/following::contact/name/firstName"
15.select="employees/employee[2]/preceding::contact/name/firstName"
16.select="employee[@dept='programming']"
17.select="employees/head:header/namespace::head"
18.value-of select="person[position()=3]/name"