Subject: Re: How to compare two QName values in an XML Schema?
From: Lisa Li <lxqd@xxxxxxxxx>
Date: Fri, 8 Apr 2011 09:41:05 -0700 (PDT)
|
<xsl:variable name="base-type-qname"
select="resolve-QName(xs:schema/xs:simpleType[2]/xs:restriction/@base,
xs:schema/xs:simpleType[2]/xs:restriction)"
<xsl:variable
name="base-type-local-name" select="local-name-from-QName($base-type-qname)"/>
<xsl:variable name="base-type-namespace-uri"
select="namespace-uri-from-QName($base-type-qname)"/>
<xsl:variable
name="type-local-name" select="xs:schema/xs:simpleType[1]/@name"/>
<xsl:variable name="type-namespace-uri" select="xs:schema/@targetNamespace"/>
<xsl:variable name="basetype-is-type" select="if ( $base-type-local-name =
$type-local-name" and $base-type-namespace-uri = $type-namespace-uri)
then
true
else false"/>
Lisa
--- On Fri, 4/8/11, Costello, Roger L.
<costello@xxxxxxxxx> wrote:
> From: Costello, Roger L. <costello@xxxxxxxxx>
>
Subject: How to compare two QName values in an XML Schema?
> To:
"xsl-list@xxxxxxxxxxxxxxxxxxxxxx" <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
>
Received: Friday, April 8, 2011, 11:00 AM
> Hi Folks,
>
> Below is an XML
Schema, containing two simpleTypes. The
> second one references the first.
>
> I want an XPath expression that compares the second
> simpleType's reference
to the name of the first simpleType:
>
>
>
/xs:schema/xs:simpleType[1]/@name
> eq
>
>
/xs:schema/xs:simpleType[2]/xs:restriction/@base
>
>
> That returns False. I
want it to return True.
>
> I figured the reason it's returning False is
because it is
> comparing the string "elev:BostonAreaSurfaceElevation"
>
against the string "EarthSurfaceElevation". Yes?
>
> I want it to do a
comparison of QNames, not strings. So I
> type-cast the values:
>
>
>
xs:QName(/xs:schema/xs:simpleType[1]/@name)
> eq
>
>
xs:QName(/xs:schema/xs:simpleType[2]/xs:restriction/@base)
>
>
> But that
gave me this error:
>
> Casting from xs:unTypedAtomic to xs:QName
> can
never succeed.
>
> Why?
>
> What's the correct way to do the comparison?
>
> ---------------------------------------------------------
> <xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
>
targetNamespace="http://www.elevation.org"
>
xmlns:elev="http://www.elevation.org"
>
>
elementFormDefault="qualified">
>
> <xsd:simpleType name=
>
"EarthSurfaceElevation">
> <xsd:restriction
> base="xsd:integer">
>
> <xsd:minInclusive value="-1290"/>
>
>
<xsd:maxInclusive value="29035"/>
> </xsd:restriction>
>
</xsd:simpleType>
>
> <xsd:simpleType name=
>
"BostonAreaSurfaceElevation">
> <xsd:restriction
>
base="elev:EarthSurfaceElevation">
>
> <xsd:minInclusive
value="0"/>
>
> <xsd:maxInclusive value="120"/>
>
</xsd:restriction>
> </xsd:simpleType>
>
> </xsd:schema>
>
---------------------------------------------------------
>
> /Roger
>
>
--~------------------------------------------------------------------
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
> To
unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
> or e-mail:
<mailto:xsl-list-unsubscribe@xxxxxxxxxxxxxxxxxxxxxx>
> --~--
|