我正在尝试从外部DTD文件创建动态临时表和数据集。我试图简化一些xml代码POST / GET,并利用数据集的READ / WRITE XML函数。
我引用了READ-XMLSCHEMA的文档,它似乎做了我需要的,然而,我不断收到错误,无法弄清楚我做错了什么。
这是一个片段
DEFINE VARIABLE hTable AS HANDLE NO-UNDO.
DEFINE VARIABLE retOK AS LOGICAL NO-UNDO.
DEFINE VARIABLE cSourceType AS CHARACTER NO-UNDO.
DEFINE VARIABLE cFile AS CHARACTER NO-UNDO.
DEFINE VARIABLE lOverrideDefaultMapping AS LOGICAL NO-UNDO.
DEFINE VARIABLE cFieldTypeMapping AS CHARACTER NO-UNDO.
DEFINE VARIABLE cVerifySchemaMode AS CHARACTER NO-UNDO.
CREATE TEMP-TABLE hTable.
ASSIGN
cSourceType = "file"
cFile = "http://xml.cxml.org/schemas/cXML/1.2.025/InvoiceDetail.dtd"
lOverrideDefaultMapping = NO
cFieldTypeMapping = ?
cVerifySchemaMode = ?.
retOK = hTable:READ-XMLSCHEMA (cSourceType,
cFile,
lOverrideDefaultMapping,
cFieldTypeMapping,
cVerifySchemaMode).
有没有人知道如何使用Openedge 10.1C实现这一目标。
由于
我收到的错误......
---------------------------
Error
---------------------------
Error reading XML file 'http://xml.cxml.org/schemas/cXML/1.2.025/InvoiceDetail.dtd'. (13035)
---------------------------
OK
---------------------------
---------------------------
Error
---------------------------
READ-XML encountered an error while parsing the XML Document: FATAL ERROR: file 'http://xml.cxml.org/schemas/cXML/1.2.025/InvoiceDetail.dtd', line '15', column '2', message 'Expected comment or CDATA'. (13064)
---------------------------
OK
---------------------------
答案 0 :(得分:1)
我认为Progress正在寻找一个XSD文件 - 而不是DTD。查看您的链接并将其与我使用的工作XSD文件进行比较,它们看起来没什么相似之处。
Progress会喜欢的XSD示例如下:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="" xmlns:prodata="urn:schemas-progress-com:xml-prodata:0001">
<xsd:element name="tt_DBId" prodata:proTempTable="true">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="tt_DBIdRow" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="dbidLogName" type="xsd:string" nillable="true" prodata:label="DB Logical Name"/>
<xsd:element name="dbidPhysName" type="xsd:string" nillable="true" prodata:label="DB Physical Name"/>
<xsd:element name="dbidHost" type="xsd:string" nillable="true" prodata:label="DB Host Name"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:unique name="dbidLogName-idx" prodata:primaryIndex="true">
<xsd:selector xpath=".//tt_DBIdRow"/>
<xsd:field xpath="dbidLogName"/>
</xsd:unique>
</xsd:element>
</xsd:schema>
此外,10.1C不具备最佳兼容性。这是一个非常古老的版本,很长一段时间没有看到更新。 10.2B后期服务包进行了很多改进,OE11.4或11.5应该有更好的支持。