Xml 有没有办法为元素分隔列表定义XSD

Xml 有没有办法为元素分隔列表定义XSD,xml,xsd,separator,xmllist,Xml,Xsd,Separator,Xmllist,我想为以下XML构造定义一个模式: <object>System<S/>Design<S/>Part</object> SystemDesignPart 其中,元素“object”应该用内容列表作为枚举值(系统、设计、零件)填充,其中可能包含空格,这就是为什么我不能使用空格分隔的列表。我使用元素作为分隔符 但是所有可以作为简单内容父元素的xsd元素都不会作为元素的父元素,反之亦然。有没有办法解决这个问题?答案是否定的——除非您转到XSD 1.1

我想为以下XML构造定义一个模式:

<object>System<S/>Design<S/>Part</object>
SystemDesignPart
其中,元素“object”应该用内容列表作为枚举值(系统、设计、零件)填充,其中可能包含空格,这就是为什么我不能使用空格分隔的列表。我使用元素作为分隔符

但是所有可以作为简单内容父元素的xsd元素都不会作为元素的父元素,反之亦然。有没有办法解决这个问题?

答案是否定的——除非您转到XSD 1.1并使用断言

在XSD1.0中,无法约束混合内容元素的文本节点中显示的文本。这是因为您没有按照设计的方式使用XML(在这种结构上使用XPath/XSLT也会有问题)

在XSD1.1中,您可以在声明“object”时使用断言,例如

test=“text()中的每个$s都满足$s=('System'、'Design'、'Part')

答案是否定的——除非您转到XSD 1.1并使用断言

在XSD 1.0中,无法约束显示在混合内容元素的文本节点中的文本。这是因为您没有按照设计的方式使用XML(在这种结构上使用XPath/XSLT也会有问题)

在XSD1.1中,您可以在声明“object”时使用断言,例如


test=“text()中的每个$s都满足$s=('System'、'Design'、'Part')

解决此问题的最简单方法是使用稍微不同的XML结构,例如:

<object>
  <item>System</item>
  <item>Design</item>
  <item>Part</item>
</object>

系统
设计
部分

这允许单个项值根据需要包含空格,并且可以很容易地使用XSD中的枚举列表约束合法值。它还更直接地展示了数据的结构:您使用一个或多个对象的列表来描述对象(我称之为
item
,因为我不知道它们实际上是什么——在XML中给它们一个信息更丰富的名称!)。在问题的概念模型中,列表中的每一个东西或其他东西都是一个不同的对象,如果每个东西都由一个不同的XML对象表示(这里是元素类型
的一个不同实例),则对您和XML工具来说都会更好

解决此问题的最简单方法是使用稍微不同的XML结构,例如:

<object>
  <item>System</item>
  <item>Design</item>
  <item>Part</item>
</object>

系统
设计
部分
这允许单个项值根据需要包含空格,并且可以很容易地使用XSD中的枚举列表约束合法值。它还更直接地展示了数据的结构:您使用一个或多个对象的列表来描述对象(我称之为
item
,因为我不知道它们实际上是什么——在XML中给它们一个信息更丰富的名称!)。在问题的概念模型中,列表中的每一个东西或其他东西都是一个不同的对象,如果每个东西都由一个不同的XML对象表示(这里是元素类型
的一个不同实例),则对您和XML工具来说都会更好