AW: Restricting attribute content to not include a specific string

Hi,

Thanks a lot for all the usefull hints.
Do you know, if there is a good validation tool, which can validate xml instances against 
an XML Schema with embedded Schematron definitions?

best regards,
Roman

> -----Ursprüngliche Nachricht-----
> Von: George Cristian Bina [mailto:george@oxygenxml.com] 
> Gesendet: Donnerstag, 20. April 2006 11:33
> An: Pete Cordell
> Cc: Huditsch, Roman (LNG-VIE); xmlschema-dev@w3.org
> Betreff: Re: Restricting attribute content to not include a 
> specific string
> 
> Hi Roman,
> 
> If Schematron embedded rules are ok for you then you can do 
> something like:
> 
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
>    <xs:element name="root">
>      <xs:complexType>
>        <xs:annotation>
>          <xs:appinfo>
>            <pattern xmlns="http://www.ascc.net/xml/schematron" 
> name="testNotUnkown">
>              <rule context="root">
>                <assert test="@test!='unknown'">The value 
> cannot be 'unknown'</assert>
>              </rule>
>            </pattern>
>          </xs:appinfo>
>        </xs:annotation>
>        <xs:attribute name="test" type="xs:string"/>
>      </xs:complexType>
>    </xs:element>
> </xs:schema>
> 
> then
> 
> <root test="unknown"></root>
> 
> gives:
> 
> SystemID: C:\george\workspace\oXygen\samples\test.xml
> Location: 1:0
> Description: The value for test attribute cannot be 'unknown' 
> (@test!='unknown')
> 
> Best Regards,
> George
> ---------------------------------------------------------------------
> George Cristian Bina
> <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger 
> http://www.oxygenxml.com
> 
> 
> Pete Cordell wrote:
> > 
> > Hi Roman,
> > 
> > "Not a pattern" doesn't seem to be something XSD supports.  I think 
> > the only way this can be done is by doing something like:
> > 
> > <xs:simpleType name="attrValue">
> > <xs:restriction base="xs:string">
> > <xs:pattern value=""/>
> > <xs:pattern value="[^u].*"/>
> > <xs:pattern value="u[^n].*"/>
> > <xs:pattern value="un[^k].*"/>
> > <xs:pattern value="unk[^n].*"/>
> > <xs:pattern value="unkn[^o].*"/>
> > <xs:pattern value="unkno[^w].*"/>
> > <xs:pattern value="unknow[^n].*"/>
> > <xs:pattern value="unknown.+"/>
> > </xs:restriction>
> > </xs:simpleType>
> > 
> > Not a pretty sight!
> > 
> > (Note that . does not match \n, so if you want your extra text to 
> > include \n you will have to modify the . bit.) Pete.
> > --
> > =============================================
> > Pete Cordell
> > Tech-Know-Ware Ltd
> >                         for XML to C++ data binding visit
> >                         http://www.tech-know-ware.com/lmx
> >                         (or http://www.xml2cpp.com) 
> > =============================================
> > 
> > ----- Original Message ----- From: "Huditsch, Roman (LNG-VIE)" 
> > <Roman.Huditsch@lexisnexis.at>
> > To: <xmlschema-dev@w3.org>
> > Sent: Thursday, April 20, 2006 7:59 AM
> > Subject: Restricting attribute content to not include a specific 
> > string
> > 
> > 
> > 
> > Hi,
> > 
> > I need to restrict attribute values in my Schema to not be 
> the string 
> > "unknown".
> > So I declared a simple type as follows:
> > 
> > <xs:simpleType name="attrValue">
> > <xs:restriction base="xs:string">
> > <xs:pattern value="^(unknown)"/>
> > </xs:restriction>
> > </xs:simpleType>
> > 
> > Since I am not experienced with regular expressions I am 
> kind of stuck 
> > on the pattern value.
> > Do you have any idea, how to make that restriction in the 
> most simple 
> > way?
> > Thank you very much for your help.
> > 
> > best regards,
> > Roman
> > 
> > 
> > 
> > 
> > 
> 

Received on Thursday, 20 April 2006 09:51:22 UTC