0

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

谢谢你的时间。

4

1 回答 1

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>
于 2013-03-06T15:12:14.463 回答