XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Bob ChauvinSubject: XPath to find occurences of a node in an XSD
Author: Bob Chauvin
Date: 19 Jan 2006 01:03 AM
Originally Posted: 19 Jan 2006 12:59 AM
Is there such a thing as using XPath to determine the existance of a node in an xsd file?
NOTE: In SS, right click "Copy XPath to Clipboard" delivers this, but i doesn't look specific to the named node "Body": /*[local-name()='schema' and namespace-uri()='http://www.w3.org/2001/XMLSchema']/*[local-name()='element' and namespace-uri()='http://www.w3.org/2001/XMLSchema'][1]/*[local-name()='complexType' and namespace-uri()='http://www.w3.org/2001/XMLSchema'][1]/*[local-name()='sequence' and namespace-uri()='http://www.w3.org/2001/XMLSchema'][1]/*[local-name()='element' and namespace-uri()='http://www.w3.org/2001/XMLSchema'][4] For example, what is the XPath to determine if Body is a valid node in the following xsd file:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/office/infopath/2003/my/2006-01-05T14:10:19" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/my/2006-01-05T14:10:19" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="myFields">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:AreasofInterest"/>
<xsd:element ref="my:MailPreferences"/>
<xsd:element ref="my:Activities"/>
<xsd:element ref="my:Body"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AreasofInterest">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Code"/>
<xsd:element ref="my:Notes"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="MailPreferences">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Code"/>
<xsd:element ref="my:Notes"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Activities">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Code"/>
<xsd:element ref="my:Notes"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Body" type="xs:string"/>
</xsd:element>
<xsd:element name="Notes">
</xsd:element>
</xsd:schema>

Postnext
Tony LavinioSubject: XPath to find occurences of a node in an XSD
Author: Tony Lavinio
Date: 19 Jan 2006 01:39 AM
You're right, the XPath expression is to the node that defines Body,
not to Body itself.

Body isn't a node in the XSD file; the XSD file describes a schema
that, when applied to another XML file, will determine (among other
things) if an element named Body exists in the correct location.

Are you trying to find out if any elements named 'Body' are defined
in the XSD? Or are you trying to find an XPath expression that you
can use against an XML file to find out if it has a 'Body' element
in the place specified by the XSD?

The former is not too hard but probably not too useful; the latter,
depending on the schema, can be very difficult.

Postnext
Bob ChauvinSubject: XPath to find occurences of a node in an XSD
Author: Bob Chauvin
Date: 19 Jan 2006 02:06 AM
Originally Posted: 19 Jan 2006 01:44 AM
I'm trying to find out if any elements named 'Body' are defined<br>in the XSD?<br><br>May seem weird, but I want to make sure that while I'm building an xml via .net that I don't add nodes that aren't in the schema.<br><br>Probably trying to do it the hard way? Is there a better way?

Postnext
Bob ChauvinSubject: XPath to find occurences of a node in an XSD
Author: Bob Chauvin
Date: 19 Jan 2006 02:34 AM
And,

/*[local-name()='my:ConversationTopic']

doesn't work if there is a node at the same level as Body.

Postnext
Bob ChauvinSubject: XPath to find occurences of a node in an XSD
Author: Bob Chauvin
Date: 19 Jan 2006 02:13 AM
It looks like the XPath copied to clipboard in the XSD is providing positional access to a node, by use of the [4] being the fourth node under the sequence node.

Is that expected? and can SS also provid XPath that uses node names?

Postnext
Bob ChauvinSubject: XPath to find occurences of a node in an XSD
Author: Bob Chauvin
Date: 19 Jan 2006 02:59 AM
This query seems to work

/*[local-name()='schema' and namespace-uri()='http://www.w3.org/2001/XMLSchema']/*[local-name()='element' and namespace-uri()='http://www.w3.org/2001/XMLSchema'][1]/*[local-name()='complexType' and namespace-uri()='http://www.w3.org/2001/XMLSchema'][1]/*[local-name()='sequence' and namespace-uri()='http://www.w3.org/2001/XMLSchema'][1]/*[local-name()='element'][@ref="my:ConversationIndex"]

Which can be shortened to

//*[local-name()='element'][@ref="my:ConversationIndex"]

Posttop
Bob ChauvinSubject: XPath to find occurences of a node in an XSD
Author: Bob Chauvin
Date: 19 Jan 2006 04:30 AM
And the answer is....

ls_XPathSearchString = "//*[local-name()='element'][@ref='my:" + ol_ItemProperty.Name + "']"
nl = xmlSchemaDoc.SelectSingleNode(ls_XPathSearchString)
If nl Is Nothing Then
' this node is not in the schema defined for our infopath form,
' so skip it.
Continue For
End If

 
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.