xsl-list
[Top] [All Lists]

RE: Help needed in XSD

2005-07-18 07:22:36
In general, processing a schema document correctly is tough, unless you know
that it only uses a small subset of the schema language. For example, it's
not easy to apply all the rules for element wildcards, substitution groups,
derivation by extension, use of named model groups, and so on.

But if we assume that you can extract from the schema a list of element
names indicating the order in which children should appear, then it's
reasonably easy to do the transformation. For example if the list is like
this (in order.xml):

<elementOrder>
  <Type/>
  <Description/>
  <MetalHours/>
  <PaintHours/>
</elementOrder>

then you could do

<xsl:template match="Exception">
  <xsl:for-each select="*">
    <xsl:sort select="count(document('order.xml')/elementOrder/*[name() =
name(current())]/preceding-sibling::*)" type="number"/>
    <xsl:copy-of select="."/>
  </xsl:for-each>
</xsl:template> 

-----Original Message-----
From: Lakshmi narayana [mailto:lchintala(_at_)osi-tech(_dot_)com] 
Sent: 18 July 2005 12:03
To: XSL (E-mail)
Subject: [xsl] Help needed in XSD


Hi,
I have an xml file and XSD file. For example consider the 
following xml and
xsd files.
In the XSD file, I mentioned the sequence of elements to 
appear in the XML.
But what I need
is, if they are not in the specified sequence in the xml file, the xml
should be modified to place them in order.
For this, do I need to write XSLT or we can acheive it using XSD only.
Please give the code whther in XSLT or XSD.

XML file
 <Exception>
      <Type>X</Type>
      <Location><![CDATA[Right/Door Front]]></Location>
      <Description>Dings No Paint Damage, PDR</Description>
      <ChargeableFlag>0</ChargeableFlag>
      <PaintHours>0.0</PaintHours>
      <PartCost>50.0</PartCost>
      <RepairHours>0.0</RepairHours>
      <Total>50.0</Total>
 </Exception>

XSD file

<xs:schema elementFormDefault="qualified" 
attributeFormDefault="unqualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema";>
      <xs:element name="Exception">
              <xs:complexType>
                      <xs:sequence>
                              <xs:element name="Type" 
type="xs:string"/>
                              <xs:element name="Description" 
type="xs:string"/>
                              <xs:element 
name="ChargeableFlag" type="xs:boolean"/>
                              <xs:element name="FrameHours" 
type="xs:decimal" minOccurs="0"/>
                              <xs:element name="PaintHours" 
type="xs:decimal" minOccurs="0"/>
                              <xs:element name="PartCost" 
type="xs:decimal" minOccurs="0"/>
                              <xs:element name="MetalHours" 
type="xs:decimal" minOccurs="0"/>
                              <xs:element name="RepairHours" 
type="xs:decimal" minOccurs="0"/>
                              <xs:element name="Total" 
type="xs:decimal"/>
                              <xs:element name="Location" 
type="xs:string"/>
                              <xs:element 
name="ExceptionImage" minOccurs="0" maxOccurs="5">
                                      <xs:complexType>
                                              <xs:all>
                                                      
<xs:element name="FileName" type="xs:string"/>
                                              </xs:all>
                                      </xs:complexType>
                              </xs:element>
                      </xs:sequence>
              </xs:complexType>
      </xs:element>
</xs:schema>

Thanks
Laxmi Narayana


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>