xsl-list
[Top] [All Lists]

[xsl] Connected attribute rules in schema?

2014-08-18 07:59:37
An XML element has numerous potential attributes, most of them optional. In
a couple of cases, an attribute needs to be mandatory if another attribute
has a particular value. Is there a way of defining this in the document
schema?

 

For example the following might define a code fragment, consisting of text
with embedded <nl> elements. The fragment can be highlighted or not
(highlight="Y" or highlight="N"), and it can be flagged as private or not
(private="Y" or private="N"). There is an optional note attribute, which can
among other things provide a reason for the element to remain "private".

 

<xs:simpleType name="boolean">

  <xs:restriction base="xs:string">

    <xs:enumeration value="Y"/>

   <xs:enumeration value="N"/>

  </xs:restriction>

</xs:simpleType>

 

<xs:element name="nl">

  <xs:complexType/>

</xs:element>

 

<xs:complexType name="fragment" mixed="true">

  <xs:choice minOccurs="0" maxOccurs="unbounded">

    <xs:element ref="nl"/>

 </xs:choice>

  <xs:attribute name="highlight" type="boolean"/>

  <xs:attribute name="private" type="boolean"/>

  <xs:attribute name="note"/>

</xs:complexType>

 

Is there any way to indicate in the schema that the "note" attribute is
mandatory IF private="Y"?

 

Coalescing the two attributes into one (e.g. "privatereason") and using a
value or no value as equivalent to a Boolean test is not feasible because
there are legitimate cases for a note when the element is not private.

 

Thanks for any ideas

T

 
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>