在这里排名业余.我得到如何在XML中使用空元素的说明.但你为什么要这样?除了(我猜)在解析XML时添加空白记录,它会用于什么?
以下是W3Schools的信息:
"空XML元素没有内容的元素被认为是空的.在XML中,你可以指示一个这样的空元素:
<element></element>
或者你可以使用一个空标记,就像这样(这种元素语法称为自闭合):<element />
上面的两种形式在XML解析器中产生相同的结果."
如果架构要求标签以特定顺序出现,则即使该标签具有空值,也可能需要包括该标签。例如,以下来自架构的片段指示您在标签栏之前需要标签foo:
<xs:element name="parent">
<xs:complexType>
<xs:sequence>
<xs:element name="foo" minOccurs="1" maxOccurs="1" />
<xs:element name="bar" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
因此以下片段将是有效的:
<parent>
<foo />
<bar>asdf!</bar>
</parent>
Run Code Online (Sandbox Code Playgroud)
但是以下内容不会:
<parent>
<bar>asdf!</bar>
</parent>
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用空标记表示空值(与空值相对)。但是,如果您尝试用XML表示空值,则应该使用一个xsi:nil
属性
我认为您使用“空”元素来表示“没有任何类型子元素的元素”。自闭合元素(没有单独的结束标记的元素)可能仍然具有属性,并且在这个意义上不是空的。
(X)HTML 本身定义了“空”元素,例如<br/>
. 同样,甚至<br/>
可能具有class
其他属性。
对于如何在您自己的模式中使用它们的问题,您可以使用空 XML 元素作为“标记”(借用 .NET 使用术语“标记接口”来表示没有成员的接口的方式)。当您想要向元素添加“布尔”属性时(例如 HTML 允许无值属性,例如checked
),这非常有用。在这种情况下,使用属性会迫使您添加某种噪音(以无意义或空值的形式)。
例如,我用这种方式将莎士比亚戏剧中的演讲标记为散文:
<speech>
<speaker role="Archidamus">Archidamus</speaker>
<prose/>
<line a="If_you">If you shall chance, Camillo, to visit Bohemia, on</line>
<line a="the_like">the like occasion whereon my services are now on</line>
<line a="foot_you">foot, you shall see, as I have said, great</line>
<line a="difference_betwixt">difference betwixt our Bohemia and your Sicilia.</line>
</speech>
Run Code Online (Sandbox Code Playgroud)
也就是说,解决 XML 的缺陷(即无法表示非文本原语)有点拼凑。
归档时间: |
|
查看次数: |
21922 次 |
最近记录: |