XSD
<xs:element name="Notes" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="Note" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Subject" type="xs:string" minOccurs="0"/>
<xs:element name="Note" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Subject
和Note
为空时当前输出XML :
<Notes>
<Note/>
</Notes>
但是当Subject
和Note
为空时,我不想要任何输出。
答案 0 :(得分:0)
XSD 用于 验证。
XSD 指定XML文档有效的约束。验证的输出是成功还是失败,并且失败时,通常会有诊断消息来解释约束违规。根据您的XSD元素声明,您当前的输出XML将是有效的,就像<Notes/>
一样。但是,空文档会not be valid because it would not be well-formed。
XSLT 用于 转换。
XSLT 转换指定从输入XML到输出XML的映射。它使用XPath选择输入的一部分,以便它们可以有条件地包含在输出中并进行排列。 您的问题的语言表明您可能希望使用XSLT而不是XSD来实现结果。 XSLT根据用户提供的模板将输入转换为输出,而不是XSD中给出的约束。 SUP> **
* 输出也可以是文本; XSLT 2.0的输入也可以是文本。
** XSLT 2.0处理器可以识别模式,但不提供自动映射功能。