我可以使用三个节点之一获取xml。
<root>
<headerA>
<!-- Content -->
</headerA>
</root>
代替<headerA>
,可以有<headerB>
或<headerС>
个节点,内容相似。在这种情况下,我希望将html输出为:
<span> Type [X] </span>
其中[X]
是A,B或C,具体取决于元素的标记名称。
答案 0 :(得分:1)
正如Tomalak已经观察到的那样,你的问题相当含糊。听起来好像你可能会问如何为这三种标题写一个模板:
<xsl:template match="headerA | headerB | headerC">
<span>
<xsl:apply-templates/>
</span>
</xsl:template>
或者如何为它们编写类似但不同的模板:
<xsl:template match="headerA">
<span> Type A </span>
</xsl:template>
<xsl:template match="headerB">
<span> Type B </span>
</xsl:template>
<!--* Template for headerC left as an exercise for the reader *-->
或者如何根据匹配的内容编写一个稍微不同的模板:
<xsl:template match="headerA | headerB | headerC">
<span>
<xsl:choose>
<xsl:when test="self::headerA">
<xsl:text> Type A </xsl:type>
</xsl:when>
<xsl:when test="self::headerB">
<xsl:text> Type B </xsl:type>
</xsl:when>
<!--* etc. *-->
<xsl:otherwise>
<xsl:message terminate="yes"
>I thought this could not happen.</xsl:message>
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates/>
</span>
</xsl:template>
如果您弄清楚哪些对您有帮助,您将更接近了解您要问的问题。
答案 1 :(得分:0)
<xsl:template match="*[starts-with(name(), 'header')]">
<xsl:variable name="type" select="substring-after(name(), 'header')" />
<span>
<xsl:value-of select="concat(' Type ', $type, ' ')" />
</span>
</xsl:template>
这适用于任何名为headerX
的元素,其中X
可以是任何字符串。