XSL 选择性复制
XSL selective copy
我有这个 XML 文件:
<bases>
<marker>
<name>Main</nane>
<city>Hartford</city>
<tag>current</tag>
</marker>
<marker>
<name>Secondary</nane>
<city>Boston</city>
<tag>none</tag>
</marker>
<marker>
<name>Tertiary</nane>
<city>Bedford</city>
</marker>
</bases>
我只想复制标签元素与“当前”匹配的那些标记。所以,输出将是这样的:
<bases>
<marker>
<name>Main</nane>
<city>Hartford</city>
<tag>current</tag>
</marker>
</bases>
我是 XSLT 新手,我搞不懂。请帮忙。
你可以像这样简单地做:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>
<!-- Remove all marker elements where element tag value is not 'current' -->
<xsl:template match="marker[not(tag='current')]"/>
<!-- Identity template -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
看到它在这里工作:https://xsltfiddle.liberty-development.net/aiynev/2
我有这个 XML 文件:
<bases>
<marker>
<name>Main</nane>
<city>Hartford</city>
<tag>current</tag>
</marker>
<marker>
<name>Secondary</nane>
<city>Boston</city>
<tag>none</tag>
</marker>
<marker>
<name>Tertiary</nane>
<city>Bedford</city>
</marker>
</bases>
我只想复制标签元素与“当前”匹配的那些标记。所以,输出将是这样的:
<bases>
<marker>
<name>Main</nane>
<city>Hartford</city>
<tag>current</tag>
</marker>
</bases>
我是 XSLT 新手,我搞不懂。请帮忙。
你可以像这样简单地做:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>
<!-- Remove all marker elements where element tag value is not 'current' -->
<xsl:template match="marker[not(tag='current')]"/>
<!-- Identity template -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
看到它在这里工作:https://xsltfiddle.liberty-development.net/aiynev/2