如何在XSLT中组合两个模板?

时间:2012-12-04 12:15:32

标签: xml xslt

我有两个XSLT模板需要合并为一个,然后按字母顺序排序:

<xsl:template match="properties-for-sale">
  <xsl:for-each select="entry">
    <option value="{name}">
        <xsl:value-of select="name"/>
    </option>
  </xsl:for-each>
</xsl:template>

<xsl:template match="properties-for-rent">
  <xsl:for-each select="entry">
    <option value="{name}">
        <xsl:value-of select="name"/>
    </option>
  </xsl:for-each>
</xsl:template>

如何在XSLT中实现这一目标?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>

  <xsl:template match="properties-for-sale|properties-for-rent">
    <xsl:for-each select="entry">
      <xsl:sort select="name" order="ascending"/>
      <option value="{name}">
        <xsl:value-of select="name"/>
      </option>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

对多个XPath使用| ..并使用<xsl:sort>对值进行排序..

如果您想了解更多信息,请参考

http://www.w3schools.com/xsl/el_sort.asp

答案 1 :(得分:1)

您可以使用|运算符进行匹配

<xsl:template match="properties-for-sale|properties-for-rent">
  <xsl:for-each select="entry">
    <option value="{name}">
        <xsl:value-of select="name"/>
    </option>
  </xsl:for-each>
</xsl:template>