Subject: RE: 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: 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/
|