This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Questions about Xalan
- To: xsl-list at mulberrytech dot com
- Subject: Questions about Xalan
- From: "Peter B. West" <pbwest at netscape dot net>
- Date: Fri, 09 Jun 2000 12:37:32 +1000
- Organization: Dis
- Reply-To: xsl-list at mulberrytech dot com
Dear list,
I have some queries about XSLT, specifically as processed in Xalan. I
am, as you will gather, new to this, and I am finding it a wee bit
difficult.
1) I have found that including a default namespace declaration in the
DTD of an xml file results in nothing being recognized. If I remove the
declaration from the DTD, but leave it in the xml, processing proceeds
smoothly.
In the FAQ, there is a comment about the equivalence of default and
prefixed namespaces (where the definition is identical), and that seems
to imply that I should define a prefixed namespace in the xsl, which
will then match on the defaulted Qnames (is that right?) in the xml and
DTD. I haven't tried this. Is it corect, and if so, why does the
default not work?
2) I am processing two xml documents in a single .xsl. I access the
second through a document() function. This is the first document:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE dummy SYSTEM "dummy.dtd" [
]>
<dummy>
<a name="aname">
<b name="bname">
<c name="cname">
This is the c text
</c>
</b>
</a>
</dummy>
This is the second, called x.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE dummy SYSTEM "dummy.dtd" [
]>
<dummy>
<x name="xname">
<y name="yname">
<z name="zname">
This is the z text
</z>
</y>
</x>
</dummy>
In the xsl file, I set up a variable with the document call like so:
<xsl:variable name="xdoc" select=
"document('x.xml#xpointer(id($zname))')"/>
I invoke this with:
<xsl:apply-templates select="$xdoc" mode="xmode"/>
The zname variable has been set up like so:
<xsl:variable name="zname">zname</xsl:variable> (a)
Leaving aside the fact that Xalan does not seem to process XPointer
fragments successfully, this combination works when the time comes to
access x.xml. However, if I define the zname variable like this:
<xsl:variable name="zname" select= "zname"/> (b)
it doesn't work.
On the other hand, if I define it like this:
<xsl:variable name="zname" select= "string('zname')"/> (c)
it works again.
Does the select with a Qname immediately try to find and return a
node-set, whereas the string function forces the type of the select? Is
the result tree fragment of method (a) automatically interpreted as a
string?
If I define the xdoc variable using a result tree fragment, as in:
<xsl:variable name =
"xdoc">document('x.xml#xpointer(id("zname"))')</xsl:variable>
then when I invoke as above, it fails. If I set some debugging, I get:
XPATH: Can not convert #UNKNOWN to a NodeList!
Can anyone clarify these things for me?
Yours faithfully,
Peter
--
__ /__ Peter B. West pbwest@netscape.net
/ http://www.powerup.com.au/~pbwest
/ "Lord, to whom shall we go?"
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list