尝试从 DTD 模式创建动态临时 table(数据集)? [OE10.1C]
Trying to create a dynamic temp table (dataset) from a DTD Schema? [OE10.1C]
我正在尝试从外部 DTD 文件创建动态临时文件 table 和数据集。我试图简化一些 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
---------------------------
我认为 Progress 正在寻找 XSD 文件 -- 而不是 DTD。查看您的 link 并将其与我使用的工作 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 service pack做了很多改进,OE11.4或11.5应该会有更好的支持。
我正在尝试从外部 DTD 文件创建动态临时文件 table 和数据集。我试图简化一些 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
---------------------------
我认为 Progress 正在寻找 XSD 文件 -- 而不是 DTD。查看您的 link 并将其与我使用的工作 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 service pack做了很多改进,OE11.4或11.5应该会有更好的支持。