我是XSLT的新手,请原谅我的问题是否过于琐碎。
我需要转换下面的xml
<annotation text="Australia" f:abc.location.adm1="AU.00" f:aliases="AUSTRALIAN" f:abc.location.population="21515754" f:abc.location.id="2077456"/>
命名值对。需要匹配部分属性,即转换“ f:abc ....”形式的任何属性。
例如,输出应为。
<property><name>location.adm1</name><value>AU.00</value></property>
<property><name>population</name><value>21515754</value></property>
<property><name>location.id</name><value>2077456</value></property>
尝试了代码
<xsl:template match="t:annotation[@f:abc*]">
但没有成功,请求指导我如何创建我的.xls以获得所需的输出xml。
感谢您的时间。
答案 0 :(得分:1)
您可以通过执行以下操作来测试这些属性:
<xsl:template match="t:annotation[@f:*[starts-with(local-name(), 'abc.')]]">
然后你可以使用这样的模板来使用模板:
<xsl:template match="t:annotation[@f:*[starts-with(local-name(), 'abc.')]]">
<xsl:copy>
<xsl:apply-templates select="@f:*[starts-with(local-name(), 'abc.')]" />
</xsl:copy>
</xsl:template>
<xsl:template match="@f:*[starts-with(local-name(), 'abc.')]">
<property>
<name>
<xsl:value-of select="substring-after(local-name(), 'abc.')" />
</name>
<value>
<xsl:value-of select="." />
</value>
</property>
</xsl:template>