gpt4 book ai didi

没有 child 的 xslt 副本

转载 作者:行者123 更新时间:2023-12-04 18:52:00 25 4
gpt4 key购买 nike

你好
我有一个看起来像这样的站点地图 xml 文档

<pagenode title="home" url="~/" fornavbar="true">
<pagenode title="admin" url="~/admin" fornavbar="false">
<pagenode title="users" url="~/admin/users" fornavbar="false"/>
<pagenode title="events" url="~/admin/events" fornavbar="true"/>
</pagenode>
<pagenode title="catalog" url="~/catalog" fornavbar="true"/>
<pagenode title="contact us" url="~/contactus" fornavbar="false"/>
</pagenode>

现在我想检索导航栏的 xml 文档,其中包括所有具有 fornavbar=true 的页面节点。如何才能做到这一点?

到目前为止,我能做到的最接近的是:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="pagenode[@fornavbar='true']">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>

这样做的问题是包括任何匹配为导航栏的所有子项

我只想复制所有属性,而不是所有 child

但如果我尝试
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="pagenode[@fornavbar='true']">
<pagenode title="{@title}" url="{@url}"/>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>

然后我有2个问题
  • 我可能会分别输入每个属性,而且我每页都有很多属性,它们最终会改变
  • 它失去了层次结构。一切都变得平坦

  • 对于此事,我将不胜感激。

    谢谢你!

    编辑:id 喜欢看到的示例输出
    <pagenode title="home" url="~/" fornavbar="true">
    <pagenode title="events" url="~/admin/events" fornavbar="true"/>
    <pagenode title="catalog" url="~/catalog" fornavbar="true"/>
    </pagenode>

    最佳答案

    您可以使用 xsl:foreach select="@*" 迭代节点的属性
    这样您就不必手动复制属性。如果您调用xsl:apply-templates在你的 pagenode 元素中,你应该得到想要的结果。

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="pagenode[@fornavbar='true']">
    <pagenode>
    <xsl:for-each select="@*">
    <xsl:attribute name="{name(.)}"><xsl:value-of select="."/></xsl:attribute>
    </xsl:for-each>
    <xsl:apply-templates/>
    </pagenode>
    </xsl:template>
    </xsl:stylesheet>

    使
    <?xml version="1.0"?>
    <pagenode title="home" url="~/" fornavbar="true">
    <pagenode title="events" url="~/admin/events" fornavbar="true"/>
    <pagenode title="catalog" url="~/catalog" fornavbar="true"/>
    </pagenode>

    关于没有 child 的 xslt 副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4793098/

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