XML元素的内容可以限制吗?

时间:2009-09-26 07:18:47

标签: xml dtd

我正在尝试编写DTD,我想定义一个元素BOOKTYPE,可以是ONE,TWO或THREE。有没有办法可以确保只能在元素中输入其中一个值?

注意: 1.我知道如何在属性中执行此操作,但不知道如何使用元素完成此操作。 2.我想要一种在DTD中进行此操作的方法,而不是使用编程语言。

2 个答案:

答案 0 :(得分:1)

不在DTD,抱歉。您只需指定what elements may appear as children, and whether text content (#PCDATA) can appear or not即可。你对文本内容的含义没有说法。

您必须将数据移动到属性,或者使用比老旧笨重的DTD更强大的模式语言。

答案 1 :(得分:0)

  

有没有办法可以确保这一点   可以输入其中一个值   在元素里面?

是的,包含XML Enumeration的XML架构定义(XSD)。以下是货币的示例:

<xsd:simpleType name = "iso3currency">
 <xsd:restriction base = "xsd:string">
  <xsd:enumeration value = "AUD"/><!-- Australian Dollar -->
  <xsd:enumeration value = "BRL"/><!-- Brazilian Real -->
  <xsd:enumeration value = "CAD"/><!-- Canadian Dollar -->
  <xsd:enumeration value = "CNY"/><!-- Chinese Yen -->
  <xsd:enumeration value = "EUR"/><!-- Euro -->
  <xsd:enumeration value = "GBP"/><!-- British Pound -->
  <xsd:enumeration value = "INR"/><!-- Indian Rupee -->
  <xsd:enumeration value = "JPY"/><!-- Japanese Yen -->
  <xsd:enumeration value = "RUR"/><!-- Russian Rouble -->
  <xsd:enumeration value = "USD"/><!-- US Dollar -->
  <xsd:length value = "3"/>
 </xsd:restriction>

这会将元素的值限制为列出的枚举值之一,长度为3.

要使用它,您必须通过validator传递XML和XSD。如何在.NET中执行此操作的示例如下:

如何:根据Visual C#.NET中的XML架构验证XML片段 http://support.microsoft.com/kb/318504

相关问题