XSD元素的值是另一个元素的名称
问题描述:
我已经尝试了很多次Google,但这不是可能的,或者我使用的术语不正确。是否有可能为以下例如XSD:XSD元素的值是另一个元素的名称
<inputs>
<input>
<name>Test 1</name>
<valuesTag>values_generated_15Jan2015</valuesTag>
</input>
<inputs>
<values>
<values_generated_15Jan2015>
...
</values_generated_15Jan2015>
</values>
之所以这样做,这是我们必须只为值列表的几个选择,但大量的投入,其中值的每个列表被多个输入使用,并且不会重复值。
答
看看这个使用XSD 1.1断言的例子,这些断言在注释中进行了解释。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="inputs" type="inputsType" />
<xs:element name="values" type="valuesType" />
</xs:sequence>
<!-- Ensures that there is the same number of value nodes than input nodes -->
<xs:assert test="count(values/value) = count(inputs/input)" />
<!-- Ensures that every value in a valueId node is unique -->
<xs:assert test="count(inputs/input/valueId) = count(distinct-values(inputs/input/valueId))" />
<!-- Ensures that every value in a id attribute is unique -->
<xs:assert test="count(values/value) = count(distinct-values(values/value/@id))" />
<!-- Ensures that all values in id attributes appear in valueId -->
<xs:assert test="count(values/value[@id = ../../inputs/input/valueId]) = count(values/value)" />
</xs:complexType>
</xs:element>
<xs:complexType name="inputsType">
<xs:sequence>
<xs:element name="input" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="valueId" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="valuesType">
<xs:sequence>
<xs:element name="value" maxOccurs="unbounded">
<xs:complexType>
<!-- Content -->
<xs:attribute name="id" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
也许你可以用XSD 1.1来做到这一点。如果我理解的很好,对于每个* *节点,它应该出现在* *之内,该节点的名称等于值* *。你需要哪种内容(例如)* *? –
sergioFC
这是正确的。这些值是一个复杂数字列表,范围可以从50到1000个条目。 – steveo225
可以使用类似于* *? –
sergioFC