将XML记录组合成有意义的句子;戴尔、哈利和露西;
假设我有XML格式的将XML记录组合成有意义的句子;戴尔、哈利和露西;,xml,xslt,Xml,Xslt,假设我有XML格式的 <people> <name>Dale</name> <name>Harry</name> <name>Lucy</name> </people> 仅仅使用XSLT?它必须在一定程度上具有灵活性,以便在有更多names的地方仍然有意义 Dale, Harry, Lucy, James, Andy, Shelly and Norma 这个问题很相似,但不
<people>
<name>Dale</name>
<name>Harry</name>
<name>Lucy</name>
</people>
仅仅使用XSLT?它必须在一定程度上具有灵活性,以便在有更多name
s的地方仍然有意义
Dale, Harry, Lucy, James, Andy, Shelly and Norma
这个问题很相似,但不完全相同。唯一需要添加的是第二个条件,它决定何时插入
和
XML输入
<people>
<name>Dale</name>
<name>Harry</name>
<name>Lucy</name>
<name>John</name>
</people>
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="name">
<xsl:variable name="pos" select="position()"/>
<xsl:if test="$pos = last() and $pos != 1">
<xsl:text> and </xsl:text>
</xsl:if>
<xsl:value-of select="."/>
<xsl:if test="$pos != last() and $pos + 1 != last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:template>
</xsl:transform>
Dale, Harry, Lucy and John
或者,如果您喜欢隐式代码,但行数较少,则可以使用单个XPath表达式(XSLT 1.0)完成:
这个问题非常类似,但不完全相同。唯一需要添加的是第二个条件,它决定何时插入和
XML输入
<people>
<name>Dale</name>
<name>Harry</name>
<name>Lucy</name>
<name>John</name>
</people>
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="name">
<xsl:variable name="pos" select="position()"/>
<xsl:if test="$pos = last() and $pos != 1">
<xsl:text> and </xsl:text>
</xsl:if>
<xsl:value-of select="."/>
<xsl:if test="$pos != last() and $pos + 1 != last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:template>
</xsl:transform>
Dale, Harry, Lucy and John
或者,如果您喜欢隐式代码,但行数较少,则可以使用单个XPath表达式(XSLT 1.0)完成:
试试:
和
,
试试:
和
,
可能只是一个快速提醒的重复——尽管我知道stack exchange讨厌异地引用——有一个xslt常见问题解答网站,通过搜索该短语可以轻松找到,该网站包含xsl Mail lisr最初几年的所有最佳提示,当该工具还是新工具时。对于以前的解决方案来说,它仍然是一个很好的资源,包括一些我们认为XSLT1.0无法实现的功能!可能只是一个快速提醒的重复——虽然我知道stack exchange讨厌异地引用——有一个xslt常见问题解答网站,通过搜索该短语可以轻松找到,该网站包含xsl Mail lisr最初几年的所有最佳提示,当此工具还是新工具时。对于以前的解决方案来说,它仍然是一个很好的资源,包括一些我们认为XSLT1.0无法实现的功能@michael.hor257k编辑了答案。现在它也适用于一个名称
——不过我更喜欢您的解决方案。@michael.hor257k编辑了答案。现在它也适用于单个名称
——不过我更喜欢您的解决方案。