gpt4 book ai didi

xml - 如果有多个匹配项,如何获得所有结果 : XSL

转载 作者:行者123 更新时间:2023-12-03 17:18:15 24 4
gpt4 key购买 nike

我正在练习一些 XSL 并使用这个 XML 文档作为一个简单的例子:

<?xml version="1.1" encoding="UTF-8"?>

<zoo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="zoo.xsd" >
<animals>
<animal type="lion">
<name>Zeus</name>
<gender>M</gender>
<eats>antelope</eats>
<eats>monkey</eats>
</animal>
<animal type="monkey">
<name>Fredo</name>
<gender>M</gender>
<eats>banana</eats>
<iseatenby>lion</iseatenby>
</animal>
<animal type="lion">
<name>Here</name>
<gender>F</gender>
<eats>antelope</eats>
<eats>monkey</eats>
</animal>
<animal type="antelope">
<name>Annie</name>
<gender>F</gender>
<eats>grass</eats>
<iseatenby>lion</iseatenby>
</animal>
<animal type="elephant">
<name>Moses</name>
<gender>M</gender>
<eats>leaves</eats>
</animal>
</animals>
</zoo>

我已经能够通过我的 XSL 文档获得一些基本信息,但我现在被困在一件事上:如果结果不止一个,我如何获得所有结果?例如,在我的文档中,一些动物有多个“吃”元素。我想以逗号分隔的字符串显示它们;最终我想将每个动物的元素转换为属性,并且每个元素只有一个属性。 (使用我之前的例子,新的动物元素狮子的“吃”属性看起来像这样: eats="antelope, monkey")

有人可以解释一下我将如何用 XSL 做这样的事情吗?任何帮助深表感谢。 :)

最佳答案

用这个:

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

<xsl:template match="zoo/animals">
<xsl:copy>
<xsl:apply-templates select="animal"/>
</xsl:copy>
</xsl:template>

<xsl:template match="animal">
<xsl:copy>
<xsl:attribute name="eats">
<xsl:for-each select="eats">
<xsl:value-of select="."/>

<xsl:if test="position() != last()">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:attribute>
</xsl:copy>
</xsl:template>

</xsl:stylesheet>

引用:

The position function returns a number equal to the context position from the expression evaluation context. The last function returns a number equal to the context size from the expression evaluation context.


xsl:if检查当前节点是否不是上下文中的最后一个节点。如果是,输出 , .

http://www.w3.org/TR/xpath/#function-last

关于xml - 如果有多个匹配项,如何获得所有结果 : XSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9059425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com