我的xml是
<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="country.xsl"?>
<countries>
<country name="india">
<name>Rajan</name>
<pop>90.09</pop>
<car>Audi</car>
</country>
<country name="japan">
<name>Yenhovong</name>
<pop>172</pop>
<car>Sumo</car>
</country>
</countries>
这里我要显示
的元素国名=“日本”
使用xslt。但我不知道在xslt中匹配属性。帮助我,提前谢谢
答案 0 :(得分:1)
它的Xpath表达式为country[@name = 'japan']
。
<强> XML 强>
<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="country.xsl"?>
<countries>
<country name="india">
<name>Rajan</name>
<pop>90.09</pop>
<car>Audi</car>
</country>
<country name="japan">
<name>Yenhovong</name>
<pop>172</pop>
<car>Sumo</car>
</country>
</countries>
<强> XSL 强>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="country[@name = 'japan']">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="country"/>
</xsl:stylesheet>
<强> RESULT 强>
<?xml version="1.0" encoding="utf-8"?>
<country name="japan">
<name>Yenhovong</name>
<pop>172</pop>
<car>Sumo</car>
</country>
答案 1 :(得分:0)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[not(ancestor-or-self::country)]">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="country[not(@name='japan')]"/>
</xsl:stylesheet>
应用于提供的XML文档:
<countries>
<country name="india">
<name>Rajan</name>
<pop>90.09</pop>
<car>Audi</car>
</country>
<country name="japan">
<name>Yenhovong</name>
<pop>172</pop>
<car>Sumo</car>
</country>
</countries>
生成想要的正确结果:
<country name="japan">
<name>Yenhovong</name>
<pop>172</pop>
<car>Sumo</car>
</country>
请注意:
标识规则用于“按原样”复制每个所需节点。身份模板的使用和覆盖是最基本的XSLT设计模式。
单个模板会覆盖具有country
祖先或本身不是country
元素的任何元素的标识规则。此类元素不会复制到输出中,但会处理其子节点。
与country
属性不是name
的任何'japan'
元素匹配的覆盖模板。这有空体,这会导致忽略/删除/不复制任何此类元素。
上述1到3的结果是只有country
属性为name
的{{1}}元素由身份模板处理并复制到输出中。< / p>