我正在尝试读取一个引用xsd doc的XML文档。但是当我这样做时,我最终得到“文档类型声明包含或指向的标记声明必须格式正确”错误。不知道错误是什么。谢谢你。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE XML SYSTEM "NGPSCustomerConfig.xsd">
<NGPSCustomerConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="NGPSCustomerConfg.xsd">
<CustomerInfo id="NGPS">
<CustomerName>NGPS</CustomerName>
<CustomerAdditionalInfo> Additional Info</CustomerAdditionalInfo>
<ToolInfo>
<toolName>Service Manager</toolName>
<toolID>SM01</toolID>
<toolType>ITSM</toolType>
<toolProperty>001_SM01.Properties</toolProperty>
</ToolInfo>
<ToolInfo>
<toolName>Orchestrator</toolName>
<toolID>ORCH01</toolID>
<toolType>ORCHESTRATOR</toolType>
<toolProperty>001_ORCH01.properties</toolProperty>
</ToolInfo>
<ToolInfo>
<toolName>Event Manager</toolName>
<toolID>EM01</toolID>
<toolType>EVENT MANAGER</toolType>
<toolProperty>001_EM01.properties</toolProperty>
</ToolInfo>
</CustomerInfo>
</NGPSCustomerConfig>
XSD文件是
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="NGPSCustomerConfig">
<xs:complexType>
<xs:sequence>
<xs:element name="CustomerInfo">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="CustomerName" />
<xs:element type="xs:string" name="CustomerAdditionalInfo">
</xs:element>
<xs:element name="ToolInfo" maxOccurs="unbounded"
minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="toolName" />
<xs:element type="xs:string" name="toolID" />
<xs:element type="xs:string" name="toolType" />
<xs:element type="xs:string" name="toolProperty" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="id" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:2)
<!DOCTYPE XML SYSTEM "NGPSCustomerConfig.xsd">
说了两件事:
XML
NGPSCustomerConfig.xsd
是文档的 DTD 。在您的情况下,这些都不是真的 - NGPSCustomerConfig.xsd
是架构,而不是DTD,因此xsi:noNamespaceSchemaLocation
就足够了,您根本不需要DOCTYPE。