1

我可以使用 XSLT 将属性中的特定字符更改为 XML 中我自己的字符吗?

我有这个 XML

.... some data ....
<book attribute"test1/test2.test3"></book>
.... some data ...
<book attribute"test4/test5.test6"></book>
... some data ...

现在我想更改字符“/”和“。” 到“_”,但仅限于标签书。转换后我需要像这样编写的 XML

.... some data ....
<book attribute"test1_test2_test3"></book>
.... some data ...
<book attribute"test4_test5_test6"></book>
... some data ...

这可以简单地完成吗,谢谢,eoglasi

4

2 回答 2

2

这个 XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="book/@attribute">
    <xsl:attribute name="attribute">
      <xsl:value-of select="translate(.,'./','__')"/>
    </xsl:attribute>
  </xsl:template>

</xsl:stylesheet>

将输入 XML 中的所有内容都“按原样”复制,除了attributeelement 中的属性book,其值被转换为斜杠和点到下划线。

您可以更改 XPathbook/@attribute以匹配需要以相同方式转换的任何其他属性 - 例如book/@attribute|person/@url,也匹配url元素中的属性person

于 2013-11-13T16:16:45.777 回答
0

这可以通过translate()XSLT 的功能来完成。有关此函数的说明,请参见例如http://zvon.org/xxl/XSLTreference/Output/function_translate.html

一般语法是这样的:

translate('eoglasi', 'ae', 'AE')

这导致

'EoglAsi'
于 2013-11-13T16:17:11.700 回答