Re: [xsl] How to compare two QName values in an XML Schema?

Subject: Re: [xsl] 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: [xsl] 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>
> --~--

Current Thread