是否可以/如何使用XSLT2.0将字符串XML转换为XML?
我有一个未格式化的字符串XML,必须使用 XSLT2.0 下面是未格式化字符串XML示例。我尝试了一些XSLT,但没有像添加disable-output-escaping那样工作。标记开始符号( EDI\u DC>TABNAM>EDI\u DC40/TABNAM>MANDT>510/MANDT> DOCNUM>00000000 58569441/DOCNUM>DOCREL>740/DOCREL> 状态>30/状态>直接>1/直接>输出模式> 2/OUTMOD>EXPRSS xsi:nil=“true”/>测试 xsi:nil=“true”/>IDOCTYP>EXPINV02/IDOCTYP> CIMTYP>ZEXPINV2/CIMTYP>MESTYP>0/MESTYP> MESCOD xsi:nil=“true”/>MESFCT xsi:nil=“true”/> STD xsi:nil=“true”/>STDVRS xsi:nil=“true”/>STDMES>ZINVOI/STDMES> SNDPOR>SAPNEQ/SNDPOR>SNDPRT>LS/SNDPRT>SNDPFC xsi:nil=“true”/>SNDPRN>NEQ510/SNDPRN>SNDSAD xsi:nil=“true”/>SNDLAD xsi:nil=“true”/>RCVPOR>NXPINVOICE/RCVPOR>RCVPRT> LS/RCVPRT>RCVPFC xsi:nil=“true”/>RCVPRN>PSFFORMSCA/RCVPRN>RCVSAD xsi:nil=“true”/>RCVLAD xsi:nil=“true”/>CREDAT>20190715/CREDAT>CRETIM> 152902/CRETIM>REFINT xsi:nil=“true”/>REFGRP xsi:nil=“true”/>REFMES xsi:nil=“true”/>ARCKEY xsi:nil=“true”/SERIAL>20190528064107/SERIAL>/EDI\uu DC> 预期产出如下:是否可以/如何使用XSLT2.0将字符串XML转换为XML?,xml,string,xslt,Xml,String,Xslt,我有一个未格式化的字符串XML,必须使用 XSLT2.0 下面是未格式化字符串XML示例。我尝试了一些XSLT,但没有像添加disable-output-escaping那样工作。标记开始符号( EDI\u DC>TABNAM>EDI\u DC40/TABNAM>MANDT>510/MANDT> DOCNUM>00000000 58569441/DOCNUM>DOCREL>740/DOCREL> 状态>30/状态>直接>1/直接>输出模式> 2/OUTMOD>EXPRSS xsi:nil=“tr
<?xml version = "1.0" encoding = "UTF-8"?>
<ns0:Message xmlns:ns0 = "http://www.àbc.com/abc/Message_V2.xsd">
<ns0:Payload>
<ns:EXPINV02-ZEXPINV2-4x xmlns:ae="http://www.àbc.com/abc/05"
xmlns:ns="http://www.àbc.com/abc/IDOCS"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ns:EXP">
<EDI__DC><TABNAM>EDI_DC40</TABNAM><MANDT>510</MANDT>
<DOCNUM>0000000058569441</DOCNUM><DOCREL>740</DOCREL>
<STATUS>30</STATUS><DIRECT>1</DIRECT><OUTMOD>2</OUTMOD><EXPRSS
xsi:nil="true"/><TEST xsi:nil="true"/><IDOCTYP>EXPINV02</IDOCTYP>
<CIMTYP>ZEXPINV2</CIMTYP><MESTYP>ZINVOICE0</MESTYP><MESCOD
xsi:nil="true"/><MESFCT xsi:nil="true"/><STD xsi:nil="true"/><STDVRS
xsi:nil="true"/><STDMES>ZINVOI</STDMES><SNDPOR>SAPNEQ</SNDPOR>
<SNDPRT>LS</SNDPRT><SNDPFC xsi:nil="true"/><SNDPRN>NEQ510</SNDPRN>
<SNDSAD xsi:nil="true"/><SNDLAD xsi:nil="true"/>
<RCVPOR>NXPINVOICE</RCVPOR><RCVPRT>LS</RCVPRT><RCVPFC xsi:nil="true"/>
<RCVPRN>PSFFORMSCA</RCVPRN><RCVSAD xsi:nil="true"/><RCVLAD
xsi:nil="true"/><CREDAT>20190715</CREDAT><CRETIM>152902</CRETIM><REFINT
xsi:nil="true"/><REFGRP xsi:nil="true"/><REFMES xsi:nil="true"/>
<ARCKEY
xsi:nil="true"/><SERIAL>20190528064107</SERIAL></EDI__DC>
</ns0:Payload>
</ns0:Message>
EDI_DC40510
0000000058569441740
3012EXPIV02
ZEXPINV2ZINVOICE0ZINVOISAPNEQ
LSNEQ510
NXPINVOICELS
PSFFORMSCA20190715152902
20190528064107
检查以下代码:-
检查以下代码:-
在XSLT 3.0中,您可以使用parse-xml()
。在XSLT 2.0中没有保证可移植的方法。有些处理器可能提供类似于parse-xml()
的扩展功能,有些处理器可能允许您实现自己的扩展功能,有些处理器可能支持文档()中的“数据”URI方案
函数。在XSLT 3.0中,您可以使用parse-xml()
。在XSLT 2.0中,没有保证可移植的方法。有些处理器可能提供类似于parse-xml()
的扩展函数,有些可能允许您实现自己的扩展函数,有些可能支持文档()中的“数据”URI方案
函数。实际上是“”\"symbol Get Displayed convert to file text然后convert xml是否可以升级到XSLT 3.0?如果可以,您可以使用解析xml
来执行此操作。话虽如此,转义的xml缺少结尾EXPINV02-ZEXPINV2-4x
标记,因此目前实际上无效。谢谢!禁用输出转义
应该可以工作-但是转义字符串缺少结束标记,因此结果将不是格式良好的XML文档。实际上是“”\"symbol Get Displayed convert to file text然后convert xml是否可以升级到XSLT 3.0?如果可以,您可以使用解析xml
来执行此操作。话虽如此,转义的xml缺少结尾EXPINV02-ZEXPINV2-4x
标记,因此目前实际上无效。谢谢!禁用输出转义
应该可以工作-但是转义字符串缺少结束标记
,因此结果将不是格式良好的XML文档。此解决方案取决于支持document()函数中的“data:”URI方案的处理器,这一点绝对不能保证。此解决方案取决于支持“data:”的处理器:document()函数中的URI方案,这是绝对不能保证的。
<?xml version = "1.0" encoding = "UTF-8"?>
<ns0:Message xmlns:ns0 = "http://www.àbc.com/abc/Message_V2.xsd">
<ns0:Payload>
<ns:EXPINV02-ZEXPINV2-4x xmlns:ae="http://www.àbc.com/abc/05"
xmlns:ns="http://www.àbc.com/abc/IDOCS"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ns:EXP">
<EDI__DC><TABNAM>EDI_DC40</TABNAM><MANDT>510</MANDT>
<DOCNUM>0000000058569441</DOCNUM><DOCREL>740</DOCREL>
<STATUS>30</STATUS><DIRECT>1</DIRECT><OUTMOD>2</OUTMOD><EXPRSS
xsi:nil="true"/><TEST xsi:nil="true"/><IDOCTYP>EXPINV02</IDOCTYP>
<CIMTYP>ZEXPINV2</CIMTYP><MESTYP>ZINVOICE0</MESTYP><MESCOD
xsi:nil="true"/><MESFCT xsi:nil="true"/><STD xsi:nil="true"/><STDVRS
xsi:nil="true"/><STDMES>ZINVOI</STDMES><SNDPOR>SAPNEQ</SNDPOR>
<SNDPRT>LS</SNDPRT><SNDPFC xsi:nil="true"/><SNDPRN>NEQ510</SNDPRN>
<SNDSAD xsi:nil="true"/><SNDLAD xsi:nil="true"/>
<RCVPOR>NXPINVOICE</RCVPOR><RCVPRT>LS</RCVPRT><RCVPFC xsi:nil="true"/>
<RCVPRN>PSFFORMSCA</RCVPRN><RCVSAD xsi:nil="true"/><RCVLAD
xsi:nil="true"/><CREDAT>20190715</CREDAT><CRETIM>152902</CRETIM><REFINT
xsi:nil="true"/><REFGRP xsi:nil="true"/><REFMES xsi:nil="true"/>
<ARCKEY
xsi:nil="true"/><SERIAL>20190528064107</SERIAL></EDI__DC>
</ns0:Payload>
</ns0:Message>
Check Following Code:-
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:output method="xml" indent="yes" use-character-maps="angle-brackets"/>
<xsl:character-map name="angle-brackets">
<xsl:output-character character="<" string="<"/>
<xsl:output-character character=">" string=">"/>
</xsl:character-map>
<xsl:strip-space elements="*"/>
<xsl:template match="Plugins">
<xsl:copy>
<xsl:apply-templates select="Configuration"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Configuration">
<xsl:variable name="input">
<xsl:value-of select="."/>
</xsl:variable>
<xsl:apply-templates select="document(concat('data:text/xml,',$input))"/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>