我是XML新手。我有两个XML指的是同一个XSD。那么我可以假设两种XML的结构总是一样吗?
答案 0 :(得分:0)
这取决于XSD。 XSD可能是如此宽松,以至于两个XML文件彼此无法识别。例如:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema>
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
现在,您的XML在技术上可以包含任何内容,并且仍然可以对模式有效。
但是,一般情况下,如果您的解析器编写正确以符合特定的XSD并且您可以针对XSD验证文档,那么您的解析器将在技术上使用该XML文档,您无法在所有情况。
答案 1 :(得分:0)
这取决于你所说的“相同结构”。
假设您有两个用Java编写的程序:
那些程序是否具有相同的结构? 他们当然会这样做! 因为两者都是用Java编写的。相同的Java编译器/ Java机器可以执行它们 (即使在哪个硬件或操作系统上)! 但这里的相似性结束了。毕竟,这些是非常不同的程序。
XML模式也是如此。
每个XML模式都有效地定义了另一种标记语言 - XML的扩展 (也称为 XML词汇)。这包括特定的元素和属性, 以及用这种语言允许的各种可能的关系。
请注意 XML 是可扩展标记语言的首字母缩写,因此XML模式 实际上做的是“XML”文学所说的。
XSD(XML Schema Definition language)本身就是那种语言 - XML的特殊扩展。 XSLT是另一个例子。
那么,两个符合相同XML模式的XML是否具有相同的结构? 是的,他们这样做!它们使用相同的XML词汇表(如两个Java程序)编写。 这意味着,如果您有一些适用于该特定XML词汇表的软件 并且做了一些特别的事情,软件将同样能够处理两者 您的XML(无论它们实际包含什么)。遵循相同的XML模式将确保这一点!
但在此基础上,相似性结束 - 与两个Java程序之间相同,它们可能与原子和星系不同。