XSLT到XML,其中Attribute与模式匹配

时间:2013-03-06 14:56:38

标签: xslt

我是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。

感谢您的时间。

1 个答案:

答案 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>