คำเตือน PHP ใน XSLTProcessor::importStylesheet() แม้ว่าสไตล์ชีต XSL ใกล้จะว่างเปล่าก็ตาม

ฉันกำลังพยายามใช้รหัสต่อไปนี้

# LOAD XML FILE
$XML = new DOMDocument();
$XML->loadXML( $exporteddatatransformed );

# START XSLT
$xslt = new XSLTProcessor();
$XSL = new DOMDocument();
$XSL->load( 'xsl/'.$xsltemplatefileid.'.xsl', LIBXML_NOCDATA);
$xslt->importStylesheet( $XSL );            <-- LINE 549
#PRINT
print $xslt->transformToXML( $XML );

แต่มันสร้างข้อผิดพลาดดังต่อไปนี้

คำเตือน: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: ข้อผิดพลาดในการคอมไพล์: ไฟล์ /home/..../xsl/1234567890.xsl line 2 stylesheet องค์ประกอบใน /home/...../myfile.php ออนไลน์ 549

แผ่นงาน XSL มีลักษณะดังนี้:

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
</xsl:template>
</xsl:stylesheet> 

ขณะนี้ฉันได้ตัดมันลงเหลือเพียง "ไม่มีอะไร" เพื่อวินิจฉัยว่าปัญหาเกิดขึ้นที่ใด แต่ยังคงอยู่ในเวอร์ชัน XSL "พื้นฐาน" นี้!


person Steve    schedule 05.09.2009    source แหล่งที่มา


คำตอบ (1)


ดูเหมือนว่าจะโหลดได้ดีหากคุณแทนที่ xsl:stylesheet บรรทัดด้วยสิ่งนี้:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

ซึ่งหมายถึงการมีไฟล์ xsl นี้:

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
    </xsl:template>
</xsl:stylesheet>

แทนที่จะเป็นของคุณ

มันใช้งานได้เมื่อคุณพยายามแปลงไฟล์ของคุณหรือไม่?


หมายเหตุ : ฉันไม่ได้ใช้ XSL ค่อนข้างบ่อย ดังนั้นจึงไม่แน่ใจว่าเหตุใดสิ่งที่คุณเสนอจึงไม่ทำงาน แต่ "http://www.w3.org/1999/XSL/Transform " ใช้ทั้งใน บทความของวิกิพีเดียเกี่ยวกับการแปลง XSL และใน ตัวอย่างไฟล์ .xsl ที่ใช้ในคู่มือ PHP...

ฉันเดาว่านี่น่าจะช่วยแก้ปัญหาของคุณได้แม้ว่าฉันจะไม่รู้ว่า "ทำไม" จริงๆ ^^

person Pascal MARTIN    schedule 05.09.2009