匹配多个ORed值,但知道何时使用XSLT

时间:2017-07-14 17:29:35

标签: xml xslt

我正在使用XSLT搜索特定元素/属性组合,以及(1)将元素重命名为搜索属性值(2)添加包含原始元素名称的属性,以及(3)删除搜索属性。我有两个不同的搜索元素,它们具有相同的属性名称,但希望使它成为单个OR匹配

  <xsl:template match="Values/Value|MultiValue">

有没有办法去捕捉&#34;匹配的值是为了避免必须在下面的XSLT中为StepClass属性提供特定的属性值?我尝试了价值,但这就是抓住元素值。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>

<!-- identity transform -->
<xsl:template match="@* | node()">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
  </xsl:copy>
</xsl:template>

<!-- Change Values/Value value of AttributeID -->
<xsl:template match="Values/Value">
  <xsl:element name="{@AttributeID}">
    <xsl:attribute name="StepClass">Value</xsl:attribute>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:element>
</xsl:template>

<!-- Change MultiValue to value of AttributeID -->
<xsl:template match="MultiValue">
  <xsl:element name="{@AttributeID}">
    <xsl:attribute name="StepClass">MultiValue</xsl:attribute>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:element>
</xsl:template>

<!--empty template suppresses this attribute-->
<xsl:template match="@AttributeID" />

1 个答案:

答案 0 :(得分:0)

  

有没有办法去捕捉&#34;匹配的价值

否(至少不容易),但有一种方法可以捕获匹配元素的名称:

<xsl:attribute name="StepClass">
    <xsl:value-of select="name()" />
</xsl:attribute>