XSLT替换值

我有一个这样的XML

<?xml version=“1.0”encoding=“UTF-8”?>
<omdefaultxmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“>
<PrintDollarsAndCents>X&lt/PrintDollarsAndCents>
<MailAddrLine1>地址1&lt/MailAddrLine1>
<MailAddrLine2>Add2&lt/MailAddrLine2>
&lt/OMDefault>

我希望使用XSLT将XML转换为

<?xml version=“1.0”encoding=“UTF-8”?>
<omdefaultxmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“>
<PrintDollarsAndCents>Y&lt/PrintDollarsAndCents>
<MailAddrLine1>地址1&lt/MailAddrLine1>
<MailAddrLine2>Add2&lt/MailAddrLine2>
&lt/OMDefault>

请注意,如果属性为PrintDollarsAndCents且其值为“X”,则“X”将转换为“Y”
有人能帮我吗?因为我对XSLT非常陌生

先谢谢你

基本上,您需要一个带有覆盖规则的标识转换

下面的转换

<?xml version=“1.0”encoding=“utf-8”?>
<xsl:stylesheet version=“1.0”xmlns:xsl=”http://www.w3.org/1999/XSL/Transform“>
<xsl:template match=“node()|@*”>
<xsl:copy>
<xsl:apply templates select=“node()|@*”/>
&lt/xsl:copy>
&lt/xsl:template>
<xsl:template match=“PrintDollarsAndCents/text()[.='X']”gt;Y&lt/xsl:template>
&lt/xsl:stylesheet>

应用于您的输入,将生成以下结果:

<omdefaultxmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“>
<PrintDollarsAndCents>Y&lt/PrintDollarsAndCents>
<MailAddrLine1>地址1&lt/MailAddrLine1>
<MailAddrLine2>Add2&lt/MailAddrLine2>
&lt/OMDefault>

第一个模板是标识转换,它精确复制输入文档

第二个模板覆盖值为X的文本节点,这些节点是PrintDollarsAndCents模板的子节点。请注意,它发出的是值Y,而不是其实际内容

发表评论