OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: [xml-dev] XML Schema views - are they possible?

[ Lists Home | Date Index | Thread Index ]

While this approach "works", in practice wouldn't the documentation 
value of the schema (including documentation that can be generated from 
the schema) suffer?

Bob Foster

Michael Kay wrote:

> This is an excellent question and I'm not sure there's an easy answer. 
> It's a concrete coding question that's directly related to the rather 
> abstract debate we've been having over the last week about the need to 
> apply multiple schemas to the same document at different stages of 
> processing.
> Over on xsl-list the other day we had someone who wanted to 
> parameterize a schema, doing the equivalent of an #ifdef. I suggested 
> writing the schema in the form of an XSLT stylesheet, using 
> <xsl:param> and <xsl:if> to conditionally generate the operational 
> schema based on supplied parameters. So in the middle of an 
> xs:sequence, say, you could write
> <xs:element name="xyz" minOccurs="{if ($param='live') then 1 else 0}"/>
> (This example is XSLT 2.0/XPath 2.0 but you could equally do it using 1.0)
> Michael Kay
>
>     ------------------------------------------------------------------------
>     *From:* Cheng, Andy [mailto:Andy.Cheng@ato.gov.au]
>     *Sent:* 27 August 2004 09:04
>     *To:* xml-dev@lists.xml.org
>     *Subject:* [xml-dev] XML Schema views - are they possible?
>
>     Dear XML Dev List,
>
>     Hello, my name is Andy and I'm a newbie to this forum. I am
>     currently getting into the XML schema development and am having a
>     problem (hope you guys can help me out). I'm wondering is there a
>     possibility of having different XML Schema views (for reusability
>     purposes). Here is an example of code:
>
>     <xs:complexType name="StatusType">
>     <xs:all>
>     <xs:element name="StatusCode" minOccurs="0">
>     <xs:complexType>
>     <xs:simpleContent>
>     <xs:restriction base="tns:stringItemType">
>     <xs:minLength value="1"/>
>     <xs:maxLength value="10"/>
>     </xs:restriction>
>     </xs:simpleContent>
>     </xs:complexType>
>     </xs:element>
>     <xs:element name="StatusMessage" minOccurs="0">
>     <xs:complexType>
>     <xs:simpleContent>
>     <xs:restriction base="tns:stringItemType">
>     <xs:minLength value="1"/>
>     <xs:maxLength value="50"/>
>     </xs:restriction>
>     </xs:simpleContent>
>     </xs:complexType>
>     </xs:element>
>     </xs:all>
>     </xs:complexType>
>
>     These two elements are optional. However, I want to reuse the
>     complexType and change the 'StatusCode' element to mandatory ie
>     change the value of 'minOccurs' to 1. What I have found so far is
>     that I could use a 'restriction' element to change the value,
>     hence the code:
>
>     <xs:element name="Status">
>     <xs:complexType>
>     <xs:complexContent>
>     <xs:restriction base="tns:StatusType">
>     <xs:all>
>     <xs:element name="StatusCode">
>     <xs:complexType>
>     <xs:simpleContent>
>     <xs:restriction base="tns:stringItemType">
>
>     <xs:minLength value="1"/>
>
>     <xs:maxLength value="10"/>
>
>     </xs:restriction>
>     </xs:simpleContent>
>     </xs:complexType>
>     </xs:element>
>     <xs:element name="StatusMessage" minOccurs="0">
>     <xs:complexType>
>     <xs:simpleContent>
>     <xs:restriction base="tns:stringItemType">
>
>     <xs:minLength value="1"/>
>
>     <xs:maxLength value="50"/>
>
>     </xs:restriction>
>     </xs:simpleContent>
>     </xs:complexType>
>     </xs:element>
>     </xs:all>
>     </xs:restriction>
>     </xs:complexContent>
>     </xs:complexType>
>     </xs:element>
>
>     What I would like to achieve is:
>     1. if I wanted to change the restriction values in the
>     complexType, the change would ripple through to all elements using
>     this complexType. However, this is not the case. When placing a
>     'restriction' element, in XMLSpy it duplicates all the elements
>     from the complexType
>
>     2. If I didn’t want this element to be passed at all ie make
>     maxOccurs ='0' (PS is this bad coding?), I don’t want the XML
>     Schema to validate the element. After a few examples by putting
>     the element in, the XML schema still does validate the element,
>     although its not wanted.
>
>     Does anyone know how to get around this?? Or perhaps is there an
>     alternative solution?
>
>     Thanks a lot!
>
>     Regards,
>
>     Andy Cheng
>     *Australian Taxation Office *
>     *INFORMATION COMMUNICATIONS & TECHNOLOGY*
>     Software Development Quality & Productivity
>
>     /andy.cheng@ato.gov.au/
>






 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS