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
Conferences Close Tree View
+ Stylus Studio Feature Requests (1192)
- Stylus Studio Technical Forum (14621)
-> + Maximum XML File Size and Out ... (4)
-> + 64-bit version of Stylus Studi... (2)
-> + Generate xml schema from edi s... (3)
-> + License disabled (6)
-> + Stylus is not recognizing save... (5)
-> + WINE / CrossOver (3)
-> + Problem with FOP plugin (SS200... (5)
-> - XML diff engine - how to ignor... (1)
-> + How to configure Xerces J (2)
-> + Configuring xerces-2_9_1 (4)
-> + Release license to use stylus ... (5)
-> + Sorting Repeater row (3)
-> - Browse for Pipeline Input (1)
-> + Stylus 2010 and Win 7 problem ... (6)
-> + Cannot set XSLT source files w... (3)
-> - Simple TXT to HTML Convertor! ... (1)
-> + Invoking XSLT and FOP Processe... (2)
-> - Add Node and Pattern for Mutlp... (1)
-> - How to get xsl:message output ... (1)
-> + WSDL for Cvent Web Service (5)
-> - newbie question: IS there a "f... (1)
-> + Windows 7 64-bit Java. Stylus ... (3)
-> + Stylus Studio Enterprise crash... (2)
-> - XML to Access or SQL? Newbie N... (1)
-> - xml to flat file mapping using... (1)
-> + Missing Document Wizards (2)
-> - XSLT mapping and (1)
-> + Citrix Softgrid package proble... (2)
-> - xsl:import dropping the attrib... (1)
-> + XSLT mapping between schemas (5)
-> + Modifying/Creating existing CA... (9)
-> - Creating XML Sample Stream fro... (1)
-> - Integer to hex (1)
-> - Opening from and then Saving t... (1)
-> - Please help me find time query... (1)
-> + Need access to the 2007 versio... (2)
-> + Connecting to a iSeries DB2 da... (2)
-> + Windows 7 Enterprise and Stylu... (5)
-> + How do you create a record inc... (2)
-> + How to convert lines with no i... (6)
-> + http://www.milyn.org/schema/ed... (3)
-> + Using source configuration fil... (2)
-> + Is there any way that we could... (3)
-> - Water mark problem in PDF Gene... (1)
-> + Conversion file for swift mt10... (4)
-> + Stylus Studio converter error (7)
-> + Help for upgrade (6)
-> + Conversion File for a Header D... (2)
-> + Java Heap Space (9)
-> - Export mappings as text (1)
-> + XQuery, Pipeline generated jav... (2)
-> + Conditional XML Conversion? (2)
-> + iDoc to EDI (2)
-> + Pipeline XSLT Java Problem (6)
-> - Created XSLT... Now what? (1)
-> - Can I have Or Condition in the... (1)
-> - Error??? during a pipeline! (1)
-> + Opening from and then Saving t... (6)
-> + Unable to start SS 2010 ES - R... (2)
-> + proxy server settings (2)
-> - post upgrade failures and a fr... (1)
-> + Error java heap space (2)
-> + XML to XML? (4)
-> + Base64 - Encoding icone with T... (2)
-> - Pipeline: Multiple plain data ... (1)
-> + Convert and XML file to 837P (4)
-> + How to use a pipeline output i... (3)
-> + Web Service Call - SSL error (5)
-> + JVM settings cannot be edited ... (3)
-> + I am opening an xsl file SSE c... (2)
-> + Xml To Database mappings (2)
-> + Java pipeline (3)
-> + create dtd from schema (2)
-> + One file in, two files out (9)
-> + XMLConverter Licence (2)
-> + hide diagram pane (3)
-> + Getting error " xsl:template i... (2)
-> + How to reduce top margin in ev... (4)
-> + Can I do this with Stylus? (4)
-> + How to remove tabs in generati... (2)
-> + Maintain Support for Stylus St... (3)
-> + How to trim field to 2 decimal... (2)
-> + Recursively update node value ... (2)
-> + Compressed content in CADATA (4)
-> + Error in Converter when readin... (2)
-> + XML parser no longer working p... (5)
-> + Application failed to start (6)
-> + Web Service Call tester (14)
-> + temp directory writing issue (3)
-> + not able to set namespace defe... (2)
-> + Unable to open UBL in XSLT Map... (8)
-> - Compatability with Windows 7 (1)
-> + Stylus Studio 10 activation fa... (5)
-> + Way to bundle up a project? (3)
-> + Type could not be found (7)
-> + Not able to import the copy bo... (2)
-> + Stylus Studio 10 does not vali... (3)
-> + How to merge table cells using... (2)
-> + Collapsible Groups (2)
-> + Apply-template problem (2)
-- Previous [601-620] [621-640] [641-660] Next
+ Website Feedback (249)
+ XSLT Help and Discussion (7625)
+ XQuery Help and Discussion (2017)
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
Neal  WaltersSubject: Xpath when namespace present
Author: Neal Walters
Date: 19 Nov 2004 09:06 AM
I have seen other posts where people have discussed how to build
Xpath when the XML contains a namespace such as follows:

<?xml version="1.0" encoding="utf-8"?>
<DocumentProcessingInfo xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.odimo.com/Amazon/MIPService/">
<documentProcessingStatus xmlns="http://www.amazon.com/merchants/merchant-interface/">_DONE_</documentProcessingStatus>
<processingReport xmlns="http://www.amazon.com/merchants/merchant-interface/">
<documentID>1861223</documentID>
<generatedDateTime>2004-11-15T05:51:02.0000000-05:00</generatedDateTime>
</processingReport>
</DocumentProcessingInfo>

I go to tree view, right click, choose "Copy xpath query to clipboard"
and it generates xpath of: /DocumentProcessingInfo/documentProcessingStatus,
which yields 0 hits when I run it.

If I cannot remove the namespace (and cannot add a prefix to it),
how do I build proper Xpath query and why can't Stylus Studio build
query for me? Two of us spent 45 minutes last night working on
this and finally gave up. We tried a few variations using the
"local-name" keyword.

We are using Stylus Studio to help us with our Biztalk 2004 implementation.
Below is a similar post I sent to Microsoft newsgroup. The short xpath is
about 45 characters in length but doesn't work. The correct xpath is
about 150 characters long and very confusing. We would like to use
Stylus Studio to build the Xpath that works.


// Not sure why shorted Xpath does not work here...
//vXpath =
"/ns0:Order/ns0:ShipMethod-15[1]/@ShipMethodID";

vXpath = "/*[local-name()='Order' and
namespace-uri()='http://www.odimo.com/macs/macsorder.xsd']/*[local-name()='ShipMethod-15'
and
namespace-uri()='http://www.odimo.com/macs/macsorder.xsd']/@*[local-name()='ShipMethodID' and namespace-uri()='']";

// Take shipping method from SQL and insert into MACS
xpath(mMACSXml2,vXpath)
=
mSpAmazonOrderShippingResp.OrderShipping.ShipMethod;



Thanks in advance,
Neal Walters
http://Biztalk-Training.com - Free Biztalk Demos




Postnext
(Deleted User) Subject: Re: Xpath when namespace present
Author: (Deleted User)
Date: 23 Nov 2004 01:56 AM
Hi Neal,
thanks for reporting this: Stylus should definitely create the correct
XPath string also when a default namespace is declared midway in the document.

A fix for this will be in the next update of Stylus.

Thanks,
Alberto


Postnext
Neal  WaltersSubject: Re: Xpath when namespace present
Author: Neal Walters
Date: 30 Nov 2004 06:28 PM

Given this XML document:

<?xml version="1.0" encoding="utf-8"?>
<DocumentProcessingInfo xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="TEST">
<documentProcessingStatus>_DONE_</documentProcessingStatus>
<processingReport>
<documentID>1861223</documentID>
<generatedDateTime>2004-11-15T05:51:02.0000000-05:00</generatedDateTime>
</processingReport>
</DocumentProcessingInfo>

Should I be able to build an XPath something like this?
I don't really understand it - but it's more or less the way Biztalk 2004 generates Xpath for its schemas.

/*[local-name()="DocumentProcessingInfo" and namespace-uri()='']/*[local-name()="documentProcessingStatus" and namespace-uri()='']

Stylus Studio finds 0 hits whereas I am hoping to find the documentProcessingStatus node.


Thanks again,
Neal Walters
http://Biztalk-Training.com

Postnext
Ivan PedruzziSubject: Re: Xpath when namespace present
Author: Ivan Pedruzzi
Date: 01 Dec 2004 12:41 AM

Neal,

The XML document is overriding the default namespace (xmlns="TEST")
You need to change yuor Xpath like so

/*[local-name()="DocumentProcessingInfo" and namespace-uri()='TEST']/*[local-name()="documentProcessingStatus" and namespace-uri()='TEST']

Ivan

Postnext
Neal  WaltersSubject: Re: Xpath when namespace present
Author: Neal Walters
Date: 01 Dec 2004 10:31 AM
Thanks, here are some more examples of things that work and don't work:

<TestSchema xmlns="http://MapTest.TestSchema">
<A>AValue</A>
<B>BValue</B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</TestSchema>
<!--
Works: /*[local-name()="TestSchema" and namespace-uri()='http://MapTest.TestSchema']/*[local-name()="A" and namespace-uri()='http://MapTest.TestSchema']
Biztalk Distinigushed field - does not work?: /*[local-name()='TestSchema' and namespace-uri()='http://MapTest.TestSchema']/*[local-name()='B' and namespace-uri()='']"
Works: /*[local-name()="TestSchema" and namespace-uri()='http://MapTest.TestSchema']/*[local-name()="A"]
-->

I'm still researching why Biztalk builds an Xpath expression
that ends like this: and namespace-uri()=''

Thanks
Neal Walters


Postnext
Neal  WaltersSubject: Re: Xpath when namespace present
Author: Neal Walters
Date: 01 Dec 2004 12:29 PM
Here are my findings and examples:

Sample 1 – Simple Data with no namespace issues

<TestSchema>
<A>AValue</A>
<B>BValue</B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</TestSchema>

XPATH Result
/TestSchema/A AValue
/TestSchema/B BValue
/TestSchema/CGroup/CChild1 CChild1Value



Sample 2 – Simple Data with prefixed namespace
NOTE: When you generate test xml data from a Biztalk schema, it generates it as follows with the “ns0” prefix used on the namespace.

<ns0:TestSchema xmlns:ns0="http://MapTest.TestSchema">
<A>AValue</A>
<B>BValue</B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</ns0:TestSchema>

XPATH Result
/TestSchema/A NO MATCHES
/TestSchema/B NO MATCHES
/ns0:TestSchema/A AValue
/ns0:TestSchema/B BValue
/ns0:TestSchema/CGroup/CChild1 CChild1Value
Biztalk Distinguished Field have xpath like this:

/*[local-name()='TestSchema' and namespace-uri()='http://MapTest.TestSchema']/*[local-name()='B' and namespace-uri()='']

NOTE: this can easily be abbreviated to the simpler syntax shown in the second XPATH example above. BValue



Sample 3 – Simple Data with non-prefixed namespace
This is a common problem when schemas have a default namespace and no prefix is used.

<TestSchema xmlns="http://MapTest.TestSchema">
<A>AValue</A>
<B>BValue</B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</TestSchema>

XPATH Result
/TestSchema/A NO MATCHES
/TestSchema/B NO MATCHES
NOTE: When accessing children nodes, the namespace-uri() can be omitted:

/*[local-name()="TestSchema" and namespace-uri()='http://MapTest.TestSchema']/*[local-name()="A"] AValue
/*[local-name()="TestSchema" and namespace-uri()='http://MapTest.TestSchema']/*[local-name()="B" and namespace-uri()='http://MapTest.TestSchema'] BValue
/*[local-name()="TestSchema" and namespace-uri()='http://MapTest.TestSchema']/*[local-name()="CGroup" and namespace-uri()='http://MapTest.TestSchema']/*[local-name()="CChild1" and namespace-uri()='http://MapTest.TestSchema'] CChild1Value



Sample 4 – Prefixed Namespace (not prefixed elements)
One quick solution to using complicated Xpath names is to put a prefix on the namespace. The namespace is no longer the “default namespace” and now only applies to element specifically prefixed with ns0.

<TestSchema xmlns:ns0="http://MapTest.TestSchema">
<A>AValue</A>
<B>BValue</B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</TestSchema>


XPATH Result
/TestSchema/A AValue
/TestSchema/B BValue




Sample 5 – Obscure Sample
This shows how you could have two namespaces with different prefixes, and use the namespace-uri() keyword instead of the namespace prefix.

<ns0:TestSchema xmlns:ns0="http://MapTest.TestSchema" xmlns:x="testx">
<A>AValue</A>
<x:B>BValue</x:B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</ns0:TestSchema>
<!--
Works: /ns0:TestSchema/x:B
Works: /*[local-name()='TestSchema' and namespace-uri()='http://MapTest.TestSchema']/*[local-name()='B' and namespace-uri()='testx']
-->


XPATH Result
/TestSchema/A NO MATCHES
/TestSchema/B NO MATCHES
/ns0:TestSchema/x:B BValue
/*[local-name()='TestSchema' and namespace-uri()='http://MapTest.TestSchema']/*[local-name()='B' and namespace-uri()='testx'] BValue


Neal Walters
http://Biztalk-Training.com - Free Training Videos



Postnext
Neal  WaltersSubject: Re: Xpath when namespace present
Author: Neal Walters
Date: 01 Dec 2004 01:45 PM
Here are my findings and examples:

Sample 1 – Simple Data with no namespace issues

<TestSchema>
<A>AValue</A>
<B>BValue</B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</TestSchema>

XPATH Result
/TestSchema/A AValue
/TestSchema/B BValue
/TestSchema/CGroup/CChild1 CChild1Value



Sample 2 – Simple Data with prefixed namespace
NOTE: When you generate test xml data from a Biztalk schema, it generates it as follows with the “ns0” prefix used on the namespace.

<ns0:TestSchema xmlns:ns0="http://MapTest.TestSchema">
<A>AValue</A>
<B>BValue</B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</ns0:TestSchema>

XPATH Result
/TestSchema/A NO MATCHES
/TestSchema/B NO MATCHES
/ns0:TestSchema/A AValue
/ns0:TestSchema/B BValue
/ns0:TestSchema/CGroup/CChild1 CChild1Value
Biztalk Distinguished Field have xpath like this:

/*[local-name()='TestSchema' and namespace-uri()='http://MapTest.TestSchema']/*[local-name()='B' and namespace-uri()='']

NOTE: this can easily be abbreviated to the simpler syntax shown in the second XPATH example above. BValue



Sample 3 – Simple Data with non-prefixed namespace
This is a common problem when schemas have a default namespace and no prefix is used.

<TestSchema xmlns="http://MapTest.TestSchema">
<A>AValue</A>
<B>BValue</B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</TestSchema>

XPATH Result
/TestSchema/A NO MATCHES
/TestSchema/B NO MATCHES
NOTE: When accessing children nodes, the namespace-uri() can be omitted:

/*[local-name()="TestSchema" and namespace-uri()='http://MapTest.TestSchema']/*[local-name()="A"] AValue
/*[local-name()="TestSchema" and namespace-uri()='http://MapTest.TestSchema']/*[local-name()="B" and namespace-uri()='http://MapTest.TestSchema'] BValue
/*[local-name()="TestSchema" and namespace-uri()='http://MapTest.TestSchema']/*[local-name()="CGroup" and namespace-uri()='http://MapTest.TestSchema']/*[local-name()="CChild1" and namespace-uri()='http://MapTest.TestSchema'] CChild1Value



Sample 4 – Prefixed Namespace (not prefixed elements)
One quick solution to using complicated Xpath names is to put a prefix on the namespace. The namespace is no longer the “default namespace” and now only applies to element specifically prefixed with ns0.

<TestSchema xmlns:ns0="http://MapTest.TestSchema">
<A>AValue</A>
<B>BValue</B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</TestSchema>


XPATH Result
/TestSchema/A AValue
/TestSchema/B BValue




Sample 5 – Obscure Sample
This shows how you could have two namespaces with different prefixes, and use the namespace-uri() keyword instead of the namespace prefix.

<ns0:TestSchema xmlns:ns0="http://MapTest.TestSchema" xmlns:x="testx">
<A>AValue</A>
<x:B>BValue</x:B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</ns0:TestSchema>
<!--
Works: /ns0:TestSchema/x:B
Works: /*[local-name()='TestSchema' and namespace-uri()='http://MapTest.TestSchema']/*[local-name()='B' and namespace-uri()='testx']
-->


XPATH Result
/TestSchema/A NO MATCHES
/TestSchema/B NO MATCHES
/ns0:TestSchema/x:B BValue
/*[local-name()='TestSchema' and namespace-uri()='http://MapTest.TestSchema']/*[local-name()='B' and namespace-uri()='testx'] BValue


Neal Walters
http://Biztalk-Training.com - Free Training Videos



Posttop
Neal  WaltersSubject: Re: Xpath when namespace present
Author: Neal Walters
Date: 01 Dec 2004 02:25 PM
Here are my findings and examples:

Sample 1 – Simple Data with no namespace issues

<TestSchema>
<A>AValue</A>
<B>BValue</B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</TestSchema>

XPATH Result
/TestSchema/A AValue
/TestSchema/B BValue
/TestSchema/CGroup/CChild1 CChild1Value



Sample 2 – Simple Data with prefixed namespace
NOTE: When you generate test xml data from a Biztalk schema, it generates it as follows with the “ns0” prefix used on the namespace.

<ns0:TestSchema xmlns:ns0="http://MapTest.TestSchema">
<A>AValue</A>
<B>BValue</B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</ns0:TestSchema>

XPATH Result
/TestSchema/A NO MATCHES
/TestSchema/B NO MATCHES
/ns0:TestSchema/A AValue
/ns0:TestSchema/B BValue
/ns0:TestSchema/CGroup/CChild1 CChild1Value
Biztalk Distinguished Field have xpath like this:

/*[local-name()='TestSchema' and namespace-uri()='http://MapTest.TestSchema']/*[local-name()='B' and namespace-uri()='']

NOTE: this can easily be abbreviated to the simpler syntax shown in the second XPATH example above. BValue



Sample 3 – Simple Data with non-prefixed namespace
This is a common problem when schemas have a default namespace and no prefix is used.

<TestSchema xmlns="http://MapTest.TestSchema">
<A>AValue</A>
<B>BValue</B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</TestSchema>

XPATH Result
/TestSchema/A NO MATCHES
/TestSchema/B NO MATCHES
NOTE: When accessing children nodes, the namespace-uri() can be omitted:

/*[local-name()="TestSchema" and namespace-uri()='http://MapTest.TestSchema']/*[local-name()="A"] AValue
/*[local-name()="TestSchema" and namespace-uri()='http://MapTest.TestSchema']/*[local-name()="B" and namespace-uri()='http://MapTest.TestSchema'] BValue
/*[local-name()="TestSchema" and namespace-uri()='http://MapTest.TestSchema']/*[local-name()="CGroup" and namespace-uri()='http://MapTest.TestSchema']/*[local-name()="CChild1" and namespace-uri()='http://MapTest.TestSchema'] CChild1Value



Sample 4 – Prefixed Namespace (not prefixed elements)
One quick solution to using complicated Xpath names is to put a prefix on the namespace. The namespace is no longer the “default namespace” and now only applies to element specifically prefixed with ns0.

<TestSchema xmlns:ns0="http://MapTest.TestSchema">
<A>AValue</A>
<B>BValue</B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</TestSchema>


XPATH Result
/TestSchema/A AValue
/TestSchema/B BValue




Sample 5 – Obscure Sample
This shows how you could have two namespaces with different prefixes, and use the namespace-uri() keyword instead of the namespace prefix.

<ns0:TestSchema xmlns:ns0="http://MapTest.TestSchema" xmlns:x="testx">
<A>AValue</A>
<x:B>BValue</x:B>
<CGroup>
<CChild1>CChild1Value</CChild1>
<CChild2>CChild2Value</CChild2>
</CGroup>
</ns0:TestSchema>
<!--
Works: /ns0:TestSchema/x:B
Works: /*[local-name()='TestSchema' and namespace-uri()='http://MapTest.TestSchema']/*[local-name()='B' and namespace-uri()='testx']
-->


XPATH Result
/TestSchema/A NO MATCHES
/TestSchema/B NO MATCHES
/ns0:TestSchema/x:B BValue
/*[local-name()='TestSchema' and namespace-uri()='http://MapTest.TestSchema']/*[local-name()='B' and namespace-uri()='testx'] BValue


Neal Walters
http://Biztalk-Training.com - Free Training Videos



   
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.