[
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/
>
|