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

Reply via email to