[erlang-questions] xmerl_xpath and namespaces
bryan rasmussen
rasmussen.bryan@REDACTED
Tue Oct 7 13:53:13 CEST 2008
Hi Denis,
2008/10/3 denis <dloutrein.lists@REDACTED>:
> Hello,
>
>
>
> I'm having some problem using xmerl_xpath on a document having namespaces.
> I'm not sure I fully understand how all of this work and the problem should
> not come from xmerl_xpath, but from my misunderstanding of xml, namespace,
> xpath…
>
> It seems that with xpath, it's mandatory to give the namespace.
>
>
> For instance, in a document like this:
>
>
>
> <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified"
>
>
>
> targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/">
>
> <xs:simpleType name="char">
>
> <xs:restriction base="xs:int"/>
>
> </xs:simpleType>
>
> <xs:element name="duration" nillable="true" type="tns:duration"/>
>
> <xs:simpleType name="duration">
>
> <xs:restriction base="xs:duration">
>
> <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?"/>
>
> <xs:minInclusive value="-P10675199DT2H48M5.4775808S"/>
>
> <xs:maxInclusive value="P10675199DT2H48M5.4775807S"/>
>
> </xs:restriction>
>
> </xs:simpleType>
>
> <xs:element name="guid" nillable="true" type="tns:guid"/>
>
> </xs:schema>
>
>
>
> If I want to get all "element" attributes, I need to do a query like
>
> xmerl_xpath:string("//xs:simpleType", X)
>
> Is there a way to not having to give the namespace in the query ??
This XPath should get it //*[local-name()='simpleType']
but that would also get any element where the local name (xpath term
for dom basename) of an element was simpleType so if your instance was
this
<xs:schema attributeFormDefault="qualified"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:blah="http://example.org/blah"
targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/">
<xs:simpleType name="char">
<xs:restriction base="xs:int"/>
</xs:simpleType>
<xs:element name="duration" nillable="true" type="tns:duration"/>
<xs:simpleType name="duration">
<xs:restriction base="xs:duration">
<xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?"/>
<xs:minInclusive value="-P10675199DT2H48M5.4775808S"/>
<xs:maxInclusive value="P10675199DT2H48M5.4775807S"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="guid" nillable="true" type="tns:guid"/>
<xs:annotation>
<xs:appInfo><blah:simpleType>blah blah blah</blah:simpleType></xs:appInfo>
<xs:documentation xml:lang="en">
3 blahs long!
</xs:documentation>
</xs:annotation>
</xs:schema>
then the xpath would return both blah:simpleType and xs:simpleType,
but how often is that a real problem.
Cheers,
Bryan Rasmussen
More information about the erlang-questions
mailing list