[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

[xsl] Seek a simple XPath 2.0 expression to return union xs: simpleType containing xs:string


Subject: [xsl] Seek a simple XPath 2.0 expression to return union xs: simpleType containing xs:string
From: "Costello, Roger L. costello@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 4 Dec 2015 13:15:05 -0000

Hi Folks,

I seek an XPath 2.0 expression that returns all XML Schema simpleTypes
containing a union with memberTypes containing the XML Schema string type.
(Phew! Did you catch all that?)

So, the XPath should return the union simpleType in this schema:

-----------------------------------------------------------------------------
-----
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:simpleType name="test">
        <xs:union memberTypes="xs:int xs:string" />
    </xs:simpleType>

</xs:schema>
-----------------------------------------------------------------------------
-----

The XPath should not return the union simpleType in this schema:

-----------------------------------------------------------------------------
-----
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:simpleType name="test">
        <xs:union memberTypes="xs:int string"/>
    </xs:simpleType>

   <xs:simpleType name="string">
       <xs:restriction base="xs:string" />
   </xs:simpleType>

</xs:schema>
-----------------------------------------------------------------------------
-----

I created a horrendously complex XPath 2.0 expression. I think it works (it's
so complex, I'm not sure). Is there a simpler XPath 2.0 expression to solve
this problem?

Here's the ugly XPath 2.0 expression that I created:

//xs:simpleType[xs:union[@memberTypes]
       [exists(index-of(for $here in ., $i in tokenize(@memberTypes, '\s+')
return
        namespace-uri-from-QName(resolve-QName($i, $here)) eq
           'http://www.w3.org/2001/XMLSchema' and
       local-name-from-QName(resolve-QName($i, $here)) eq 'string',
true()))]]

/Roger


Current Thread
Keywords