This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: xhtml XPath problem
- From: "Dion Houston" <dionh at microsoft dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Thu, 16 May 2002 12:47:57 -0700
- Subject: RE: [xsl] xhtml XPath problem
- Reply-to: xsl-list at lists dot mulberrytech dot com
Actually the issue is not per se with XHTML. It's the fact that your
elements are assigned to a namespace. In XPath, expressions such as
"foo" will only match a foo element if it has a NULL namespace.
Otherwise, assign the namespace to an arbitrary prefix in your XSL and
use that prefix to refer to the element, i.e.
<xsl:stylesheet ... xmlns:x="http://www.w3.org/1999/xhtml">
...
<xsl:value-of select="$source/x:html/x:head/x:title" />
HTH!
Dion
-----Original Message-----
From: Doug Chestnut [mailto:dhc4z@virginia.edu]
Sent: Thursday, May 16, 2002 12:32 PM
To: XSL-List@lists.mulberrytech.com
Subject: [xsl] xhtml XPath problem
I am having trouble with XPath when trying to match elements in an xhtml
document stored in an xsl:variable. I have no trouble when the xhtml is
missing its DOCTYPE declaration, but can't match elements when the xhtml
is conforming. I used xalan for this example:
test.html:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.or
g/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>test doc</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head><body></body>
</html>
test.xsl:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="http://lib.virginia.edu/my-template-language">
<xsl:variable name="source" select="/" />
<xsl:template match="/">
<xsl:value-of select="$source/html/head/title" />
</xsl:template>
</xsl:stylesheet>
Result:
<?xml version="1.0" encoding="UTF-8"?>
I would like to see the title "test doc" there but it is not. If I
modify my test.html file it works:
test.html:
<html><head>
<title>test doc</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head><body></body>
</html>
Result:
<?xml version="1.0" encoding="UTF-8"?>
test doc
Can anyone let me know why this is not working with a valid xhtml
document?
Thanks in advance for any help,
--Doug
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list