Help | Site Map
Connecting Tech Pros Worldwide
 
 
LinkBack Thread Tools
  #1  
Old July 26th, 2006, 08:15 PM
smachin1000@gmail.com
Guest
 
Posts: n/a
Default simple problem trying to specify a unique attribute with XML schema

Hi All,

In the sample schema & document below, I'd like the attribute "name" to
be unique for all function elements under function_list. The tools I'm
using (XML Spy and xmllint) all validate the sample document and do not
pick up that the name is not unique.
Any clues as to what could be going wrong?

Thanks.

-----------------------------------------------------------------------------------------------------------------------------
function_list.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="function_list">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element ref="function"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="unique_fn_name">
<xs:selector xpath="function_list"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="function">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<!-- want the above attribute to be unique -->
</xs:complexType>
</xs:element>
</xs:schema>

-----------------------------------------------------------------------------------------------------------------------------
function_list.xml:

<?xml version="1.0" encoding="UTF-8"?>
<function_list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="function_list.xsd">
<function name="fred"/>
<function name="fred"/>
<function name="frog"/>
<function name="fred"/>
</function_list>

  #2  
Old July 27th, 2006, 01:05 PM
George Bina
Guest
 
Posts: n/a
Default Re: simple problem trying to specify a unique attribute with XML schema

Hi,

Your unique constrint does not select any nodes because you are in a
function_list element and you select as selector all the cildren
elements that have the name function_list and there are no such
elements in your instance document

<xs:selector xpath="function_list"/>

What you want is probably

<xs:selector xpath="function"/>

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

smachin1000@gmail.com wrote:
Quote:
Hi All,
>
In the sample schema & document below, I'd like the attribute "name" to
be unique for all function elements under function_list. The tools I'm
using (XML Spy and xmllint) all validate the sample document and do not
pick up that the name is not unique.
Any clues as to what could be going wrong?
>
Thanks.
>
-----------------------------------------------------------------------------------------------------------------------------
function_list.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="function_list">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element ref="function"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="unique_fn_name">
<xs:selector xpath="function_list"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="function">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<!-- want the above attribute to be unique -->
</xs:complexType>
</xs:element>
</xs:schema>
>
-----------------------------------------------------------------------------------------------------------------------------
function_list.xml:
>
<?xml version="1.0" encoding="UTF-8"?>
<function_list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="function_list.xsd">
<function name="fred"/>
<function name="fred"/>
<function name="frog"/>
<function name="fred"/>
</function_list>
  #3  
Old July 27th, 2006, 09:05 PM
smachin1000@gmail.com
Guest
 
Posts: n/a
Default Re: simple problem trying to specify a unique attribute with XML schema

Thanks George,

Your advice worked :)
The other thing that was tripping me up is that my real world example
(as opposed to the canonical example I posted here) was using a default
namespace, so I had to some further tweaking to get the xpath expr. to
work correctly.


George Bina wrote:
Quote:
Hi,
>
Your unique constrint does not select any nodes because you are in a
function_list element and you select as selector all the cildren
elements that have the name function_list and there are no such
elements in your instance document
>
<xs:selector xpath="function_list"/>
>
What you want is probably
>
<xs:selector xpath="function"/>
>
Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
>
smachin1000@gmail.com wrote:
Quote:
Hi All,

In the sample schema & document below, I'd like the attribute "name" to
be unique for all function elements under function_list. The tools I'm
using (XML Spy and xmllint) all validate the sample document and do not
pick up that the name is not unique.
Any clues as to what could be going wrong?

Thanks.

-----------------------------------------------------------------------------------------------------------------------------
function_list.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="function_list">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element ref="function"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="unique_fn_name">
<xs:selector xpath="function_list"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="function">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<!-- want the above attribute to be unique -->
</xs:complexType>
</xs:element>
</xs:schema>

-----------------------------------------------------------------------------------------------------------------------------
function_list.xml:

<?xml version="1.0" encoding="UTF-8"?>
<function_list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="function_list.xsd">
<function name="fred"/>
<function name="fred"/>
<function name="frog"/>
<function name="fred"/>
</function_list>
 

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over network members.
Post your question now . . .
It's fast and it's free

Popular Articles