RE: Finding the ID attribute of an XPath from XMLSchem
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/
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format