0
我有這個xml,我需要風格,但無法甚至得到一個for.each正常工作:我嘗試,爲每個CONNECTIVITY_MESSAGE_LINE,如果名稱是'頭'然後...平xml到與新標籤分層xml
我需要幫助上手......這樣我至少可以得到糾正的語句,我已經閱讀並閱讀...
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:element name="SEPA_HEADER">
<xsl:value-of select=". = HEADER"/>
<xsl:if test="*//NAME[text() = 'HEADER']">
<p>x</p>
</xsl:if>
<xsl:for-each select="CONNECTIVITY_MESSAGE/MESSAGE_LINE/CONNECTIVITY_MESSAGE_LINE">
<P>1</P>
<xsl:choose>
<xsl:when test="//NAME[text() = 'HEADER']">
<P>CHOOSE</P>
</xsl:when>
<xsl:otherwise>
<p>123</p>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
我用VS2013
我討厭的xml:
<?xml version="1.0" encoding="UTF-8"?>
<CONNECTIVITY_MESSAGE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:ifsworld-com:connectivity_message" ID="CONNECTIVITY_MESSAGE-6.0">
<APPLICATION_MESSAGE_ID>N/A</APPLICATION_MESSAGE_ID>
<APPLICATION_RECEIVER_ID>N/A</APPLICATION_RECEIVER_ID>
<CLASS_ID>ISO20022</CLASS_ID>
<CONNECTIVITY_VERSION>2.1.0</CONNECTIVITY_VERSION>
<EXEC_TIME>2017-04-06T15:20:49</EXEC_TIME>
<MEDIA_CODE>EDI</MEDIA_CODE>
<OBJSTATE>Released</OBJSTATE>
<RECEIVER>BANK</RECEIVER>
<SENDER>IFS</SENDER>
<STATE>Released</STATE>
<VERSION>N/A</VERSION>
<MESSAGE_LINES>
<CONNECTIVITY_MESSAGE_LINE>
<C01>ORDER_ID</C01>
<C02>MESSAGE_ID</C02>
<C03>CONTROL_SUM</C03>
<C04>PURCHASENO</C04>
<MESSAGE_LINE>1.0</MESSAGE_LINE>
<NAME>HEADER</NAME>
<STATE>Posted</STATE>
</CONNECTIVITY_MESSAGE_LINE>
<CONNECTIVITY_MESSAGE_LINE>
<C01>P1</C01>
<C02>line_rec_.Line_No</C02>
<MESSAGE_LINE>2.0</MESSAGE_LINE>
<NAME>PAYMENT</NAME>
<STATE>Posted</STATE>
</CONNECTIVITY_MESSAGE_LINE>
<CONNECTIVITY_MESSAGE_LINE>
<C01>P1</C01>
<C02>T1.1</C02>
<MESSAGE_LINE>3.0</MESSAGE_LINE>
<NAME>TRANS</NAME>
<STATE>Posted</STATE>
</CONNECTIVITY_MESSAGE_LINE>
<CONNECTIVITY_MESSAGE_LINE>
<C01>P1</C01>
<C02>T1.2</C02>
<MESSAGE_LINE>4.0</MESSAGE_LINE>
<NAME>TRANS</NAME>
<STATE>Posted</STATE>
</CONNECTIVITY_MESSAGE_LINE>
<CONNECTIVITY_MESSAGE_LINE>
<C01>P1</C01>
<C02>T1.3</C02>
<MESSAGE_LINE>5.0</MESSAGE_LINE>
<NAME>TRANS</NAME>
<STATE>Posted</STATE>
</CONNECTIVITY_MESSAGE_LINE>
<CONNECTIVITY_MESSAGE_LINE>
<C01>P2</C01>
<C02>line_rec_.Line_No</C02>
<MESSAGE_LINE>6.0</MESSAGE_LINE>
<NAME>PAYMENT</NAME>
<STATE>Posted</STATE>
</CONNECTIVITY_MESSAGE_LINE>
<CONNECTIVITY_MESSAGE_LINE>
<C01>P2</C01>
<C02>T2.1</C02>
<MESSAGE_LINE>7.0</MESSAGE_LINE>
<NAME>TRANS</NAME>
<STATE>Posted</STATE>
</CONNECTIVITY_MESSAGE_LINE>
<CONNECTIVITY_MESSAGE_LINE>
<C01>P2</C01>
<C02>T2.2</C02>
<MESSAGE_LINE>8.0</MESSAGE_LINE>
<NAME>TRANS</NAME>
<STATE>Posted</STATE>
</CONNECTIVITY_MESSAGE_LINE>
<CONNECTIVITY_MESSAGE_LINE>
<C01>P3</C01>
<C02>line_rec_.Line_No</C02>
<MESSAGE_LINE>9.0</MESSAGE_LINE>
<NAME>PAYMENT</NAME>
<STATE>Posted</STATE>
</CONNECTIVITY_MESSAGE_LINE>
<CONNECTIVITY_MESSAGE_LINE>
<C01>P3</C01>
<C02>T3.1</C02>
<MESSAGE_LINE>10.0</MESSAGE_LINE>
<NAME>TRANS</NAME>
<STATE>Posted</STATE>
</CONNECTIVITY_MESSAGE_LINE>
<CONNECTIVITY_MESSAGE_LINE>
<C01>P3</C01>
<C02>T3.2</C02>
<MESSAGE_LINE>11.0</MESSAGE_LINE>
<NAME>TRANS</NAME>
<STATE>Posted</STATE>
</CONNECTIVITY_MESSAGE_LINE>
<CONNECTIVITY_MESSAGE_LINE>
<C01>P3</C01>
<C02>T3.3</C02>
<MESSAGE_LINE>12.0</MESSAGE_LINE>
<NAME>TRANS</NAME>
<STATE>Posted</STATE>
</CONNECTIVITY_MESSAGE_LINE>
</MESSAGE_LINES>
</CONNECTIVITY_MESSAGE>
我用 找到了chil節點的值,現在我通知所有輸出XML在一行...任何想法? –
Lise
您的CONNECTIVITY_MESSAGE節點中似乎是_xmlns:xsi =「http://www.w3.org/2001/XMLSchema-instance」xmlns =「urn:ifsworld-com:connectivity_message」ID =「CONNECTIVITY_MESSAGE-6.0」_是導致處理問題是你的源xml中必需的屬性? – RT72
我已經刪除了linie並知道至少我可以使用一些xpath語法。 – Lise