我想修改一个XML文件,我在这个XML文件中有一些属性,我想改变它,即如果生产者是大众,那么我想将国家改为“德国” hier是我的XML:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="example.xslt"?>
<Auto>
<lkw producer="VW" country="USA">
<name>Polo</name>
<price>$5955.2</price>
<color>red</color>
</lkw>
<lkw producer="Audi" country="germany">
<name>A8</name>
<price>$8955.2</price>
<color>black</color>
</lkw>
<lkw producer="BMW" country="USA">
<name>Polo</name>
<price>$6955.2</price>
<color>blue</color>
</lkw>
<lkw producer="VW" country="China">
<name>Pasat</name>
<price>$2955.2</price>
<color>red</color>
</lkw>
</Auto>
这是我的XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@producer[parent::VW]">
<xsl:attribute name="country">
<xsl:value-of select="'germany'"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
但我看到我的XML文件没有变化,你能否告诉我,我在XSLT中的错误在哪里?
答案 0 :(得分:1)
查看您当前的模板......
<xsl:template match="@producer[parent::VW]">
这实际上相当于......
<xsl:template match="VW/@producer">
所以,当你真的想要检查属性的值时,它正在寻找一个名为 VW 的元素。
您真正要做的是, @country 属性与 @producer 属性等于 VW <的元素相匹配/ p>
<xsl:template match="lkw[@producer='VW']/@country">
<xsl:attribute name="country">
<xsl:value-of select="'germany'"/>
</xsl:attribute>
</xsl:template>