Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


RE: Repeating elements with fixed attribute values

From: "Michael Kay" <mike@--------.--->
To: "'King, Jeffrey \(Mission Systems\)'" <Jeff.King@---.--->, <xmlschema-dev@--.--->
Date: 1/4/2008 3:28:00 PM
It's a good error message because it describes the problem precisely:
Elements with the same name and in the same scope must have the same type
 
You can't do this in XML Schema 1.0, which assumes that the structure will
be in the element names, not in attribute values.
 
Some of the options open to you are:
 
(a) Use Schematron
 
(b) Use the xs:assert facility of XML Schema 1.1, which is implemented in
the current Saxon release
 
(c) Do validation as a two-step operation: first transform to a structure
that can be described in XML Schema, then perform XML Schema validation on
the result.
 
Using xs:assert it would look something like this:
 
<xs:complexType>
  <xs:sequence>
    <xs:element name="field" type="fieldType" minOcccurs="3" maxOccurs="3"/>
  </xs:sequence>
  <xs:assert test="field[1][@name = 'field1' and @value='1']"/>
  <xs:assert test="field[2][@name = 'field2' and @value='2']"/>
  <xs:assert test="field[3][@name = 'field3' and @value='3']"/>
</xs:complexType>
 
Michael Kay
http://www.saxonica.com/
 
 


  _____  

From: xmlschema-dev-request@w... [mailto:xmlschema-dev-request@w...] On
Behalf Of King, Jeffrey (Mission Systems)
Sent: 04 January 2008 14:29
To: xmlschema-dev@w...
Subject: Repeating elements with fixed attribute values




I have an xml document similar to this: 

<root> 
  <word name="one"> 
    <field name="field1" number="1">any string here</field> 
    <field name="field2" number="2">any string here</field> 
    <field name="field3" number="3">any string here</field> 
    . 
  </word> 
  <word name="two"> 
    <field name="field4" number="4">any string here</field> 
    <field name="field5" number="5">any string here</field> 
    <field name="field6" number="6">any string here</field> 
    . 
  </word> 
</root> 

The attributes have fixed values.  I am struggling to create a schema for
this. 

If I take this approach: 

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="root"> 
    <xs:complexType> 
      <xs:sequence> 
        <xs:element maxOccurs="1" minOccurs="1" name="word"> 
           <xs:complexType> 
             <xs:sequence> 
                                                                
             <xs:element maxOccurs="1" minOccurs="1" name="field"> 
               <xs:complexType> 
                  <xs:simpleContent> 
                     <xs:extension base="xs:string"> 
                       <xs:attribute name="name" type="xs:string"
use="required" fixed="field1" /> 
                       <xs:attribute name="number" type="xs:unsignedShort"
use="required" fixed="1" /> 
                     </xs:extension> 
                 </xs:simpleContent> 
              </xs:complexType> 
             </xs:element> 
                                                        
        <xs:element maxOccurs="1" minOccurs="1" name="field"> 
             <xs:complexType> 
                    <xs:simpleContent> 
                       <xs:extension base="xs:string"> 
                          <xs:attribute name="name" type="xs:string"
use="required" fixed="field2" /> 
                          <xs:attribute name="number"
type="xs:unsignedShort" use="required" fixed="2" /> 
                       </xs:extension> 
               </xs:simpleContent> 
                </xs:complexType> 
              </xs:element> 
            ... 
          etc. 

I get an error stating: "Elements with the same name and in the same scope
must have the same type".  I'm not sure what approach to take here.  I think
this is pretty elementary, but any help with finding a solution would be
appreciated.

Thank you. 

Jeffrey 



transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent