Xml dtd文件Iso8583是否可接受

Xml dtd文件Iso8583是否可接受,xml,dtd,iso8583,Xml,Dtd,Iso8583,我必须用c#发送一条8583等距消息。我构建了如下所示的XML文件 不要注意字段的长度,我只想知道这是否可以接受 这是我的xml文件 0200 5555555555555555 01 0001 11223344 000000000001 000000000000 0792 0000000000 0949 170101 00 3800 011A080002A3400 CAE200000000000000FF 0000000000000000 00 3030 和我的xml dtd文件 <

我必须用c#发送一条8583等距消息。我构建了如下所示的XML文件

不要注意字段的长度,我只想知道这是否可以接受

这是我的xml文件


0200
5555555555555555
01
0001
11223344
000000000001
000000000000
0792
0000000000
0949
170101
00
3800
011A080002A3400 CAE200000000000000FF
0000000000000000
00
3030
和我的xml dtd文件

<?xml version="1.0" encoding="UTF-8"?>

<!ELEMENT isopackager (isofield+,isofieldpackager*,MsgType)*>
<!ELEMENT MsgType (#PCDATA)>
<!ATTLIST isopackager maxValidField     CDATA        #IMPLIED>
<!ATTLIST isopackager bitmapField       CDATA        #IMPLIED>
<!ATTLIST isopackager thirdBitmapField  CDATA        #IMPLIED>
<!ATTLIST isopackager firstField        CDATA        #IMPLIED>
<!ATTLIST isopackager emitBitmap        (true|false) #IMPLIED>
<!ATTLIST isopackager headerLength      CDATA        #IMPLIED>

<!-- isofield -->
<!ELEMENT isofield (#PCDATA)>
<!ATTLIST isofield id     CDATA        #REQUIRED>
<!ATTLIST isofield length CDATA        #REQUIRED>
<!ATTLIST isofield name   CDATA        #REQUIRED>
<!ATTLIST isofield class  NMTOKEN      #REQUIRED>
<!ATTLIST isofield token  CDATA        #IMPLIED>
<!ATTLIST isofield pad    (true|false) #IMPLIED>

<!-- isofieldpackager -->
<!ELEMENT isofieldpackager (isofield+,isofieldpackager*)*>
<!ATTLIST isofieldpackager id       CDATA        #REQUIRED>
<!ATTLIST isofieldpackager name     CDATA        #REQUIRED>
<!ATTLIST isofieldpackager length   CDATA        #REQUIRED>
<!ATTLIST isofieldpackager class    NMTOKEN      #REQUIRED>
<!ATTLIST isofieldpackager token    CDATA        #IMPLIED>
<!ATTLIST isofieldpackager pad      (true|false) #IMPLIED>
<!ATTLIST isofieldpackager packager NMTOKEN      #REQUIRED>
<!ATTLIST isofieldpackager emitBitmap (true|false) #IMPLIED>
<!ATTLIST isofieldpackager maxValidField CDATA        #IMPLIED>
<!ATTLIST isofieldpackager bitmapField CDATA        #IMPLIED>
<!ATTLIST isofieldpackager firstField  CDATA        #IMPLIED>
<!ATTLIST isofieldpackager headerLength  CDATA        #IMPLIED>

我将发送与dtd文件相关的xml格式文件。我不确定与这种类型的xml通信是否正确,它是否“可接受”取决于接受标准;这些取决于您为收件人提供了什么,而不是XML规范,因此这里无法回答您的主要问题。但是,我猜您的意思是“这个DTD是否符合XML规范,这个XML实例是否对这个DTD有效,两者是否都符合ISO 8583,以及我在做事情时是否违反了一些广泛遵循的社区惯例?”

您可以通过将文件保存在某个位置并对其运行XML验证程序来检查DTD是否符合以及XML是否有效。(如果您不知道如何执行此操作或不知道我的意思,那么通过承诺提供XML编码的消息,您可能已经吃得太多了。)我在DTD文件中没有看到任何语法错误,但我不是机器检查器,也没有使用XML解析器检查您的DTD。(我想去掉DTD文件中的XML声明,但我不确定是否有错误。)

然而,DTD并不描述XML。它声明名为isopackager、MsgType、isofield和isofieldpackager的元素类型;最后一个不会出现在XML中。XML包含名为Field_2、Field_3等的元素,这些元素未在DTD中声明。isofield声明表示该元素类型的有效实例包含字符数据,并且仅包含字符数据,但XML中的isofield元素包含一个名为Field_2、Field_3等的元素序列。可能存在其他差异;机器比人类更善于报告它们

快速浏览一下关于ISO8583的维基百科文章,没有提到标准化的XML语法,因此我不知道您的XML格式是否满足这种格式(如果存在)所施加的任何语法约束。因为我根本不知道8583,所以我对您的格式是否是ISO 8583语义的正确表示没有任何意见


至于社区约定,我唯一的建议是在DTD中添加更多的解释性注释。(我不太喜欢使用名为Field_2和Field_3的元素,但我必须说,我更喜欢使用标记为
的元素。这就是为什么你没有警告而投了否决票。这个问题与中定义的主题不符。如果你不明白为什么,请继续寻求帮助。@kjhughes我编辑了我的问题。根据do文档(银行使用的postbridge规范)我将不得不使用这种xml格式
<?xml version="1.0" encoding="UTF-8"?>

<!ELEMENT isopackager (isofield+,isofieldpackager*,MsgType)*>
<!ELEMENT MsgType (#PCDATA)>
<!ATTLIST isopackager maxValidField     CDATA        #IMPLIED>
<!ATTLIST isopackager bitmapField       CDATA        #IMPLIED>
<!ATTLIST isopackager thirdBitmapField  CDATA        #IMPLIED>
<!ATTLIST isopackager firstField        CDATA        #IMPLIED>
<!ATTLIST isopackager emitBitmap        (true|false) #IMPLIED>
<!ATTLIST isopackager headerLength      CDATA        #IMPLIED>

<!-- isofield -->
<!ELEMENT isofield (#PCDATA)>
<!ATTLIST isofield id     CDATA        #REQUIRED>
<!ATTLIST isofield length CDATA        #REQUIRED>
<!ATTLIST isofield name   CDATA        #REQUIRED>
<!ATTLIST isofield class  NMTOKEN      #REQUIRED>
<!ATTLIST isofield token  CDATA        #IMPLIED>
<!ATTLIST isofield pad    (true|false) #IMPLIED>

<!-- isofieldpackager -->
<!ELEMENT isofieldpackager (isofield+,isofieldpackager*)*>
<!ATTLIST isofieldpackager id       CDATA        #REQUIRED>
<!ATTLIST isofieldpackager name     CDATA        #REQUIRED>
<!ATTLIST isofieldpackager length   CDATA        #REQUIRED>
<!ATTLIST isofieldpackager class    NMTOKEN      #REQUIRED>
<!ATTLIST isofieldpackager token    CDATA        #IMPLIED>
<!ATTLIST isofieldpackager pad      (true|false) #IMPLIED>
<!ATTLIST isofieldpackager packager NMTOKEN      #REQUIRED>
<!ATTLIST isofieldpackager emitBitmap (true|false) #IMPLIED>
<!ATTLIST isofieldpackager maxValidField CDATA        #IMPLIED>
<!ATTLIST isofieldpackager bitmapField CDATA        #IMPLIED>
<!ATTLIST isofieldpackager firstField  CDATA        #IMPLIED>
<!ATTLIST isofieldpackager headerLength  CDATA        #IMPLIED>