嗨,我有一个看起来像这样的站点地图 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>
这样做的问题是包括任何匹配为导航栏的所有子项
我只想复制所有属性,而不是所有孩子
但如果我尝试
<?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>