我有一些内容是从xsl的外部xml中提取的。在xml中,标题与作者合并,并用反斜杠分隔它们。
如何在xsl中分隔标题和作者,以便我可以使用不同的标记
<product>
<title>The Maze / Jane Evans</title>
</product>
是
<h2>The Maze</h2>
<p>Jane Evans</p>
答案 0 :(得分:1)
希望这有帮助!如果我误解了这个问题,请告诉我!
<xsl:variable name="title">
<xsl:value-of select="/product/title"/>
</xsl:variable>
<xsl:template match="/">
<xsl:choose>
<!--create new elements from existing text-->
<xsl:when test="contains($title, '/')">
<xsl:element name="h2">
<xsl:value-of select="substring-before($title, '/')"/>
</xsl:element>
<xsl:element name="p">
<xsl:value-of select="substring-after($title, '/')"/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<!--no '/' deliminator exists-->
<xsl:value-of select="$title"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
答案 1 :(得分:1)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="title[contains(., '/')]">
<h2>
<xsl:value-of select="substring-before(., '/')"/>
</h2>
<p>
<xsl:value-of select="substring-after(., '/')"/>
</p>
</xsl:template>
<xsl:template match="title">
<h2><xsl:value-of select="."/></h2>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档:
<product>
<title>The Maze / Jane Evans</title>
</product>
产生想要的结果:
<h2>The Maze </h2>
<p> Jane Evans</p>
请注意,没有使用明确的条件代码 - XSLT处理器本身就能正常工作。
答案 2 :(得分:0)