Xslt 如何通过Xsl读取EDI的值?

Xslt 如何通过Xsl读取EDI的值?,xslt,Xslt,下面是示例edi,我只需要通过XSL/XSLT将其转换为XML。我想知道如何解析/读取和检索EDI中的值 UNB+UNOA:2+SENDER-ID+RECEIVER-ID+090211:0811+0001+++++GEKU' UNH+0001+BAPLIE:D:95B:UN:SMDG20' BGM++0001+9' DTM+137:0902110811:201' TDT+20+00018NB+++GEK:172:ZZZ+++47AVS:103:ZZZ:SALERNO PRIDE:IT' LOC+

下面是示例edi,我只需要通过XSL/XSLT将其转换为XML。我想知道如何解析/读取和检索EDI中的值

UNB+UNOA:2+SENDER-ID+RECEIVER-ID+090211:0811+0001+++++GEKU'
UNH+0001+BAPLIE:D:95B:UN:SMDG20'
BGM++0001+9'
DTM+137:0902110811:201'
TDT+20+00018NB+++GEK:172:ZZZ+++47AVS:103:ZZZ:SALERNO PRIDE:IT'
LOC+5+ITCAG:139:6'
LOC+61+ITSAL:139:6'
DTM+132:090211:101'
DTM+178:0902111230:201'
DTM+136:0902112330:201'
RFF+VON:GKS01A'
LOC+147+0010112::5'
MEA+WT++KGM:22500'
LOC+9+ITCAG:139:6'
LOC+11+ITSAL:139:6'
RFF+BM:1'
EQD+CN+GEKS1504090+22G1+++5'
NAD+CA+GEK:172:ZZZ'
UNT+18+0001'
UNZ+1+0001'

提前谢谢。基本上需要XSL/XSLT

使用XSLT1.0不能解析XML以外的内容。因此,不可能使用XSLT 1.0来解析EDI。使用XSLT 2.0来解析EDI最简单/最好的方法是使用函数来加载和处理EDI内容。使用XSLT2.0,您可以使用高级字符串函数和正则表达式功能

由于内容位于文本文件中,因此可以使用任何XML(甚至XSLT本身)作为输入XML文件,然后在根节点的模板中加载文本文件并进行处理

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="2.0">
    <xsl:output indent="yes"/>

    <xsl:template match="/">
        <xsl:variable name="edi" select="unparsed-text('edi.txt')"/>
        <xsl:value-of select="$edi"/>
        <!--do stuff with EDI text-->
    </xsl:template>

</xsl:stylesheet>

如果您使用的是XSLT1.0,则可以创建一个XML“包装器”文档,该文档通过实体引用包含EDI文本的内容

<!DOCTYPE edi [
    <!ENTITY edi_text SYSTEM "edi.txt">  
]>
<edi>
    &edi_text;
</edi>

&电子数据交换文本;
然后,解析并处理包装器XML文档

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0">
    <xsl:output indent="yes"/>

    <xsl:template match="edi">
        <!--do stuff with EDI text-->
    </xsl:template>

</xsl:stylesheet>

注意:这可能不可靠。如果您的EDI文本包含任何
&

或者
为什么?可以通过xslt将csv处理为xml。同样,EDI也是一种原始数据。是这样吗?这可能是一个很难处理的问题,但它会起作用。如果我错了,请纠正“您不能使用XSLT解析XML以外的内容。”这仅适用于XSLT1.0。这并不意味着XSLT2.0或更高版本是将文本转换为XML的最佳工具,但这肯定是可能的。您能使用XSLT2.0吗?2.请提供预期的输出,并解释如何根据给定的输入生成输出。