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

Re: [xsl] creating a temporary document from multiple inputs


Subject: Re: [xsl] creating a temporary document from multiple inputs
From: Wolfgang Laun <wolfgang.laun@xxxxxxxxx>
Date: Sat, 23 Mar 2013 15:59:52 +0100

Hi David,

I tried this, and the proposed <xsl:variable name="doc"> produces an error.

<xsl:variable name="paths" as="item()*">
  <xsl:sequence select = "($p1,$p2,$p3)" />
</xsl:variable>
<xsl:variable name="doc" as="document-node()*" select="document($paths)/*"/>

Warning: on line 34
  Required item type of value of variable $doc is document-node();
supplied value has item
  type element(). The expression can succeed only if the supplied
value is an empty sequence.
Warning: on line 34 of strip4ilp.xsl:
  The only value that can pass type-checking is an empty sequence.
Required item type of
  value of variable $doc is document-node(); supplied value has item
type element()
Warning: on line 34 of strip4ilp.xsl:
  The only value that can pass type-checking is an empty sequence.
Required item type of
  value of variable $doc is document-node(); supplied value has item
type element()
Error on line 34 of strip4ilp.xsl:
  XTTE0570: Required item type of value of variable $doc is
document-node(); supplied value
  has item type element({http://www.w3.org/2001/XMLSchema}schema, xs:anyType)

-W

On 23/03/2013, David Carlisle <davidc@xxxxxxxxx> wrote:
> On 09/03/2013 16:02, Wolfgang Laun wrote:
>> XSLT 2.0.
>>
>> I had to create a single document from several inputs (so that a key
>> lookup could access them all with a single call):
>>
>> <xsl:variable name="doc" as="document-node()"> <xsl:document>
>> <xsl:sequence select="document($paths)/*"/> </xsl:document>
>> </xsl:variable> <xsl:key name="kSkips"
>> match="element()[@omc:ilp='0']" use="@name"/>
>>
>> <xsl:variable name="look" select="key('kSkips',$name,$doc)"/>
>>
>
> If you are only concatenating them for the key lookup that's an
> expensive way to do it (unless your processor internally manages to
> avoid copying all the nodes).
>
> Why not just look up along the sequence of documents?
>
> <xsl:variable name="docs" as="document-node()*"
> select="document($paths)/*"/>
>
> <xsl:variable name="look" select="$docs/key('kSkips',$name,.)"/>
>
> David


Current Thread
Keywords