Yeah, I've found this to be fairly cumbersome. I use it a lot so I wrote
a class that wraps this functionality. I can pass in any kind of xml
(DomDocument, SimpleXMLElement, string, file locaiton, etc) and it just
handles it all for me.
BTW - unless you need it // is relatively expensive in xslt. You should
use relative paths whenever possible.
Glad you figured it out.
Joelle
Ben Sgro wrote:
Thanks for the feedback
The error was super simple:
$xml = new DOMDocument;
$xml->loadXML($this->_payload);
$xsl = new DOMDocument;
$xsl->load($this->_filePath);
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);
return $proc->transformToXML($xml);
I was calling load(STRING) vs loadXML(STRING), so when it attempting
to transform the XML, it (the dom doc) was empty - it didn't load the
xml string data.
Too bad it doesn't throw an error or exception if an argument is
incorrect.
- Ben
Joelle Tegwen wrote:
This worked for me. PHP 5.2.6-2ubuntu4.1 with Suhosin-Patch 0.9.6.2
$xml =<<<XML
<ProfileRequest templateId="1" submitUser="asdf"
submitDateTime="2009-01-12T17:32:46">
<DataItem name="AccountNumber" value="600978"/>
</ProfileRequest>
XML;
$xsl =<<<XSL
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:template match="/ProfileRequest">
<Data>
<AccountNumber>
<xsl:value-of select="datait...@name='AccountNumber']/@value"/>
</AccountNumber>
</Data>
</xsl:template>
</xsl:stylesheet>
XSL;
Ben Sgro wrote:
Hello,
My PHP code is:
---------------------
$xml = new DOMDocument;
$xml->load($this->_payload); $xsltProcessor =
new XsltProcessor();
$xsl = new DomDocument;
$xsl->load('../lib/Transformations/text.xsl');
$xsltProcessor->importStylesheet($xsl);
$result = $xsltProcessor->transformToXml($xml);
return $result;
My XSL is:
--------------
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
>
<xsl:template match="/">
<xsl:element name="Data">
<xsl:element name="AccountNumber"><xsl:value-of
select="//datait...@name='AccountNumber']/@value"/>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
And my XML is:
---------------------
<ProfileRequest templateId="1" submitUser="asdf"
submitDateTime="2009-01-12T17:32:46">
<DataItem name="AccountNumber" value="600978"/>
</ProfileRequest>
The $result is:
-----------------
<?xml version="1.0"?>
<Data
xmlns="http://www.w3.org/1999/xhtml"><AccountNumber></AccountNumber></Data>
So, as you can see the AccountNumber is missing. This XSL/XML works
fine in Author (XML Tool).
Any ideas why this would fail? Also, the Xpath
(//datait...@name='AccountNumber']/@value) works
if I make the XML a simpleXML object and call xpath on it.
Thanks for your help!
- Ben
_______________________________________________
New York PHP User Group Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk
http://www.nyphp.org/show_participation.php
_______________________________________________
New York PHP User Group Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk
http://www.nyphp.org/show_participation.php
_______________________________________________
New York PHP User Group Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk
http://www.nyphp.org/show_participation.php
_______________________________________________
New York PHP User Group Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk
http://www.nyphp.org/show_participation.php