RE: test if node-set variable is empty
> How can I test if the variable $xsd_node was assigned a value? > In some cases the node-set expression to fill this variable might copy > nothing. > > ... > <xsl:variable name="xsd_node"> > <xsl:copy-of select="$xsd_doc//xs:element[@name = $name and > count(child::node()) = 0]"/> > </xsl:variable> An xsl:variable that contains an xsl:copy-of as its only content looks very strange. Why do you want to work with a copy of the data, rather than working with the original? Your code would almost certainly work just as well, and rather faster, if you selected the data without copying it: <xsl:variable name="xsd_node" select="$xsd_doc//xs:element[@name = $name and count(child::node()) = 0]"/> (There might be legitimate reasons to create a copy, for example if you want to use xsl:number to number the nodes as they appear in the new tree. But I'd be surprised.) The value of the variable is then a node-set, and you can test whether it is an empty node-set using count($xsd_node)=0. Your original variable is (in XSLT 1.0) a result-tree-fragment, and in XSLT 1.0 you can only examine its contents by using the xx:node-set() extension. You would then want to test whether the root node of the RTF has any element children: xsl:if test="xx:node-set($xsd_node)/*" Michael Kay http://www.saxonica.com/ > > <xsl:if test="???"> > ... > > Is there something like empty($xsd_node)? > > Cheers, > > R.
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format