My, there have been a lot of questions about XSLT in the past 24 hrs... admittedly most of them coming from me. In addition to my first question (repeated below for clarity), I have a second one -- how do I perform an XSLT transformation on multiple XML documents? Do I need to perform a separate XSLT transformation on each one? The reason I ask is b/c I am pulling my XML from a DB, so there may be more than one based on the results from the query. If anyone can answer this, that'd be great.
If not, perhaps you can help with this situation, which I believe will probably plague just about any PHP programmer who will ever use XSLT with PHP (or possibly any other language): I am still unsure of the best way to mix PHP & [X]HTML together in an XSLT stylesheet, because regardless of whether you specify the output method as "text" or "xml", if you are using HTML tags they must be well-formed, because Sablotron or expat (not sure which) will want the XSLT stylesheet to be a well-formed document. Only, we often interrupt our HTML code when using PHP, like this: $output_to_browser = "<a href='index.php'>Go"; $output_to_browser .= "home</a>"; (of course, the output to the browser will by a hyperlink to index.php that says "Go home".) The above looks fine as PHP code, but if you try to manipulate the data from an XSLT process in this fashion, you won't be able to use HTML tags -- the greater-than and less-than symbols can't be used, since an XSLT sheet is technically an XML document and these are not well-formed tags. In the XSLT sheet, the above might look like: <xsl:template match="location"> <a href="<xsl:value-of select="php_document" />">Go Home</a> </xsl:template> I thought that perhaps if I specified text as the output method, then the greater-than and less-than signs wouldn't be parsed, so I could use them as such: <xsl:output method="text" /> <xsl:template match="location"> <xsl:text> <a href=" </xsl:text> <xsl:value-of select="php_document" /> <xsl:text> ">Go Home</a> </xsl:text> </xsl:template match="location"> See what's happening in the above? I thought I had "escaped" my <a> tags by placing them within the <xsl:text> tags, but this is not so -- they are parsed, and the document is then interpreted as not being well-formed. So unless you want to do a straight XML-to-XML or XML-to-XHTML transformation, OR you don't want to use ANY XML or XHTML tags in your output document, you're kind of up a river. Unless someone on this list can help me find a way to "escape" the HTML tags when creating PHP code. And the only way I can think of doing it (which I still haven't tested, but might have to use) is to use variables to represent the HTML tags so that instead of <a href=" and ">Go Home</a> I could use $astartag = "<a href='"; $aendtag = "'>Go Home</a>"; and then make the style sheet like this: <xsl:output method="text" /> <xsl:template match="location"> <xsl:text> $astartag </xsl:text> <xsl:value-of select="php_document" /> <xsl:text> $aendtag </xsl:text> </xsl:template match="location"> That should work in theory. But it's incredibly crude. What do you all think? Erik ---- Erik Price Web Developer Temp Media Lab, H.H. Brown [EMAIL PROTECTED] -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php