嗨發現需要創建標籤只有當值在XML中找到創建標籤只有當值在XML
我使用XSL 我的問題是創建標籤轉換XML到XML僅如果發現價值在輸入XML中。 我提到很多東西,並創建XSL,但不工作,你可以幫我。 謝謝!
輸入XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href= "D:\Vignesh\Task\RFC\FIS107_24Feb1\MyChanges\XSL SHEET\ThirdIP-HostIP.xsl"?>
<rsm:Waybill xmlns:ccts="urn:un:unece:uncefact:documentation:standard:CoreComponentsTechnicalSpecificati on:2" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:8"
xmlns:rsm="iata:waybill:1" xmlns:ram="iata:datamodel:3">
<rsm:MessageHeaderDocument>
<ram:ID>01463898855</ram:ID>
<rsm:MessageHeaderDocument>
</rsm:Waybill>
我的XSL:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ccts="urn:un:unece:uncefact:documentation:standard:CoreComponentsTechnicalSpecification:2" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:8"
xmlns:rsm="iata:waybill:1" xmlns:ram="iata:datamodel:3">
<xsl:output method="xml" indent="yes" ></xsl:output>
<xsl:template match="/">
<xsl:if test="rsm:Waybill/rsm:MessageHeaderDocument/ram:ID">
<xsl:text><![CDATA[<ROUTING>]]></xsl:text>
<xsl:text><![CDATA[<ORIGIN>]]></xsl:text>
<xsl:text><![CDATA[ <STATION> ]]></xsl:text>
<xsl:value-of select="/rsm:Waybill/rsm:MasterConsignment/ram:OriginLocation/ram:ID"/>
<xsl:text><![CDATA[</STATION> ]]></xsl:text>
<xsl:text><![CDATA[</ORIGIN>]]></xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
我的輸出將是像 如果值是在衝壓:ID,則:
<ROUTING>
<ORIGIN>
<STATION>
01463898855
<STATION>
</ORIGIN>
</ROUTING>
如果沒有,那麼:不應創建標籤
你並沒有解決所有主要的,最糟糕的問題 - 請參閱@ Michael-Kay的答案。 –
是的,你說得對。對不起,我錯過了一切都在文本和CDATA我只是集中在這裏的條件@Vignesh你真的應該看看凱先生的答案在這裏。我的答案解決了這個問題,但不能解決XML Output的其他明顯問題。 – Chris
通過節點集比較,存在測試是多餘的。 – 2011-03-08 17:50:34