【发布时间】:2012-05-17 07:02:42
【问题描述】:
<To>
<Id>SERVICE</Id>
<Role>Commuter</Role>
</To>
<BPD>
<OrgNo>234</OrgNo>
</BPD>
<BON>123</BON>
我有这个输入 XML,我想在其中检查 //To/Id 是否包含 SERVICE。
如果它包含 SERVICE,则应在 <BPD> 命名 <BON>SERVICE</BON> 之后添加一个元素。
我还想检查我的输入 XML 是否已经包含 <BON> 元素,那么它的值应该是
替换为 <Id> 元素中的 SERVICE。
我为此创建了一个模板 ->
<xsl:template match="BPD">
<xsl:choose>
<xsl:when test="not(BON) and normalize-space(/To[Role='Commuter']/Id)='SERVICE'">
<BON>
<xsl:text>SERVICE</xsl:text>
</BON>
</xsl:when>
<xsl:when test="normalize-space(BON) and normalize-space(/To[Role='Commuter']/Id)='SERVICE'">
<BON>
<xsl:text>SERVICE</xsl:text>
</BON>
</xsl:when>
</xsl:choose>
</xsl:template>
此模板正在检查是否存在。如果它不存在,则创建<BON>
元素并为其添加“SERVICE”作为值。
如果存在,那么它会再创建一个不需要的元素。
我需要纠正我的第二种情况。
【问题讨论】:
-
您是要替换现有的
<BON>还是添加它? -
两种情况。 1) 如果
不存在,则添加到它并且值应该是 SERVICE。 2) 如果 存在,那么它的值应该被 SERVICE 替换。