我需要根据输入xml中某些元素的值来修改xml的内容。
输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<Objects>
<Object class="Item" version="1.0" distName="A-1/B-1/Item-0">
<p name="sDate">2013-02-11T00:00:00+02:00:00</p>
<p name="present">1</p>
<p name="stopD">2013-02-21T00:00:00+02:00:00</p>
<p name="id">CPU</p>
</Object>
<Object class="Item" version="1.0" distName="A-1/B-1/Item-1">
<p name="sDate">2013-02-11T00:00:00+02:00:00</p>
<p name="present">1</p>
<p name="stopD">2013-02-21T00:00:00+02:00:00</p>
<p name="id">CPU</p>
</Object>
</Objects>
XSL应根据其值更改元素的值。 对于Eg: 在节点项中,如果元素 sDate 的值为 2013-02-11T00:00:00 + 02:00:00 ,我需要把它变成空的,如下图所示。
输出XML:
<?xml version="1.0" encoding="UTF-8"?>
<Objects>
<Object class="Item" version="1.0" distName="A-1/B-1/Item-0">
<p name="sDate"></p>
<p name="present">1</p>
<p name="stopD">2013-02-21T00:00:00+02:00:00</p>
<p name="id">CPU</p>
</Object>
<Object class="Item" version="1.0" distName="A-1/B-1/Item-1">
<p name="sDate"></p>
<p name="present">1</p>
<p name="stopD">2013-02-21T00:00:00+02:00:00</p>
<p name="id">CPU</p>
</Object>
</Objects>
我尝试了一些xsl,但无法让这个东西工作..任何潜在客户?
答案 0 :(得分:0)
你的问题不太清楚。以下样式表将完全符合您的要求 - 但我不确定它是否提供了一般示例:
XSLT 1.0
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.qwest.com/XMLSchema" >
<soapenv:Header/>
<soapenv:Body>
+ xmlObject.toXML()
+ </soapenv:Body>
</soapenv:Envelope>
注意强>:
在节点项中,如果元素 sDate 的值为 2013-02-11T00:00:00 + 02:00:00
您的XML中没有<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="p[@name='sDate'][.='2013-02-11T00:00:00+02:00:00']">
<p name="sDate"/>
</xsl:template>
</xsl:stylesheet>
个节点,也没有Item
元素。