2017-11-07 13 views
-3

C#에서 isoMessage 8583을 보내야합니다. 아래처럼 XML 파일을 만들었습니다Xml dtd 파일 Iso8583 허용 여부

필드 길이에 신경 쓰지 않고 받아 들일 수 있는지 알고 싶습니다.

이 내 xml 파일

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE Iso8583PostXml SYSTEM "genericpackager.dtd"> 
<isopackager> 
    <MsgType>0200</MsgType> 
    <isofield> 
     <Field_2>5555555555555555</Field_2> 
     <Field_3>01</Field_3> 
     <Field_4>0001</Field_4> 
     <Field_5>11223344</Field_5> 
     <Field_6>000000000001</Field_6> 
     <Field_7>000000000000</Field_7> 
     <Field_8>0792</Field_8> 
     <Field_9>0000000000</Field_9> 
     <Field_10>0949</Field_10> 
     <Field_11>170101</Field_11> 
     <Field_12>00</Field_12> 
     <Field_13>3800</Field_13> 
     <Field_14>0110A080002A3400CAE200000000000000FF</Field_14> 
     <Field_15>0000000000000000</Field_15> 
     <Field_16>00</Field_16> 
     <Field_17>3030</Field_17> 
    </isofield> 
</isopackager> 

내 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 유형과 통신하는 올바른 방법인지 확실하지 않습니다

+0

이것은 – chatay

+0

경고 대신 downvoted 이유입니다.이 질문은 [도움말 센터] (https://stackoverflow.com/help/on-topic)에 정의 된 주제가 아닙니다. 이유를 모르는 경우 [meta]에 도움을 요청하십시오. – Will

+0

@kjhughes 나는 내 질문을 편집했다. 한 문서 (은행에서 사용하는 postbridge 사양)에 따르면이 XML 형식의 종류를 사용해야합니다. – chatay

답변

0

"허용 가능"여부는 허용 기준에 따라 다릅니다. 그것들은 여러분이 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 등의 요소 시퀀스가 ​​포함되어 있습니다. 다른 불일치가있을 수 있습니다. 기계는 인간보다보고하는 것이 훨씬 낫습니다.

Wikipedia에서 ISO 8583에 대한 간략한 설명을 통해 표준화 된 XML 구문을 언급하지 않으므로 XML 형식이 존재할 경우 이러한 형식에 의해 부과 된 구문상의 제약 조건을 충족하는지 여부는 알 수 없습니다. 이후 8583 전혀 몰라, 나는 귀하의 형식이 ISO 8583 의미론의 올바른 표현인지 여부에 대한 의견이 없습니다.

커뮤니티 규칙에 관해서는 DTD에 더 많은 설명 주석을 추가하는 것이 좋습니다. (Field_2 및 Field_3이라는 요소로 작업하는 것이별로 좋지 않지만, <Field fieldnum="2" ...... fieldnum="3" ... 태그가있는 요소로 작업하는 것보다 훨씬 맘에 든다고 말해야하므로 불평하지 않을 것입니다.

정확히는 분명하지 않습니다. 당신이 찾고있는 것 (나는 어떤 사람들이 왜 질문을 닫고 싶은지의 일부라고 생각한다); 나는 이것이 조금 도움이되기를 바랍니다. 행운을 빕니다.