RE: [xsl] Finding the ID attribute of an XPath from XMLSchema

Subject: RE: [xsl] Finding the ID attribute of an XPath from XMLSchema
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sat, 21 Jul 2007 19:42:23 +0100
Given a node $n, you can find the value of its ID attribute if it has one
using

$n/@*[id(.) is $n]

Michael Kay
http://www.saxonica.com/
 

> -----Original Message-----
> From: v vijith [mailto:vvijith@xxxxxxxxx] 
> Sent: 21 July 2007 19:16
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Finding the ID attribute of an XPath from XMLSchema
> 
> Below is a snippet from the XMLSchema
> 
> <xs:complexType name="nameType">
> 		<xs:sequence>
> 			<xs:element minOccurs="0" ref="desig"/>
> 		</xs:sequence>
> 		<xs:attribute ref="dest" use="required"/>
> 		<xs:attribute ref="id"/>
> 		<xs:attribute ref="garageid"/>
> 		<xs:attributeGroup ref="xlink:XLINKATT1"/>
> 	</xs:complexType>
> <xs:attribute name="id" type="xs:ID"/>
> 
> this means that in the XML, the nameType node can be 
> identified by the id attribute as xs:attribute name=id is 
> mapped to XS:ID.
> 
> Likewise there can be many nodes in the XML that has ID 
> associated to it.
> 
> <xml>
> <root>
> <somenode>
> <nameType id="2" attrib2="34">text</nameType> <nameType 
> id="3" attrib2="34">text</nameType> <nameType id="4" 
> attrib2="34">text</nameType> </somenode> <anothernode 
> attrib5="55"/> </root>
> 
> 
> In the XML, I perform some kind of XQuery and I get the 
> output as root/somenode/anothernode/nameType.
> Once I get this node, I should be able to find if there is an 
> ID attribute defined for this node in the XSD.
> In the above case, the id attribute in the nameType tag is 
> the attribute as per the XML Schema.
> 
> So I need the output as id for the xpath 
> root/somenode/anothernode/nameType
> 
> Hope I have explained it better!
> 
> Well what I thought was this way as a solution 1. Parse the 
> XMLSchema 2. Make a map of XPath as key and the id as attribute.
> 3. Once I get the xpath from xquery, check the map to find 
> the id 4. But parsing XMLSchema and mapping is not that simple either
> 
> Thanks
> Vijith
> 
> On 7/21/07, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> > > I have an XML which is associated to an XMLSchema. Once I 
> perform an 
> > > XQuery on the XML I get a selected set of XPaths (Im 
> using our own 
> > > functions).
> > >
> > > For each XPath I need to know what is the ID attribute 
> for the XPath.
> > > I know that in XMLSchema there is an XS:ID Attribute. I 
> would like 
> > > to know if there is a way to find the ID associated from the 
> > > XMLSchema for an XPath in the XML.
> > >
> > > Did I confuse everyone?
> >
> > You certainly confused me. Show us your source document and tell us 
> > what you want your output to look like.
> >
> > Michael Kay
> > http://www.saxonica.com/

Current Thread