Re: AW: Restricting attribute content to not include a specific string

Hi Roman,

oXygen does that :). It chains internally (in a single operation) the 
validation with XML Schema using Xerces and the extraction of Schematron 
rules followed by a validation with the Schematron XSLT implementation 
of the document against the extracted rules. I suppose the same thing 
can be easily done also with ant if you are looking to integrate this is 
a script.
In oXygen if you associate the XML Schema with Schematron embedded rules 
externally then for schema type choose XML Schema with Schematron 
embedded rules and if you associate the schema inside the document using 
the schema instance attributes then you need to use also the oXygen PI 
to associate the same schema file as a Schematron schema, thus the 
oXygen validate action will perform both validation in one step.
Note that oXygen supports both XPath 1.0 and XPath 2.0 for Schematron 
XPath expressions. If you want to use XPath 2.0 from a script then you 
need to modify the stylesheet that extracts the rules to generate a 2.0 
XSLT stylesheet and then use an XSLT 2.0 processor like Saxon 8 for 
instance.

Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com


Huditsch, Roman (LNG-VIE) wrote:
> 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 10:12:15 UTC