2011-06-22 1 views
1

XMLファイルをロードしようとしていますが、load( '');またはloadXML();私は、エラーはどこかにあるとは思えませんが、私は何が起こっているのか考えることはできません。私はここで何が欠けていますか?DOMを使用したloadおよびloadXMLでのエラー

XSLT

<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
    version="1.0"> 

    <xsl:template match="files"> 
     <xsl:variable name="docs"> 
      <docs> 
       <xsl:for-each select="file"> 
        <xsl:copy-of select="document(.)"/> 
       </xsl:for-each> 
      </docs> 
     </xsl:variable> 

     <xsl:apply-templates select="msxsl:node-set($docs)"/> 
    </xsl:template> 

<xsl:template match="node() | @*"> 
    <xsl:copy> 
    <xsl:apply-templates select="node() | @*" /> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="item"> 
    <product> 
    <xsl:apply-templates select="node() | @*" /> 
    </product> 
</xsl:template> 


</xsl:stylesheet> 
+0

を参照してください。load' 'のためのあなたは状態エラーが明確にloadXml'が文字列としてXMLを期待'として分かりやすい 'loadXml'エラー、あり、そしてここにファイルパスを置くと、そのエラーが発生します。 2番目のファイルはすべて読み込まれているようですが、xsltファイルにエラーがあります。 (xsltファイルも投稿してください) – Yoshi

+0

@ Yoshi @Gordon私はXSLTで質問を更新しました。 – EnexoOnoma

+0

それはちょうど私かもしれませんが、 '$ xslt = new DomDocument;は' $ xslt = new DomDocument(); 'ですか? – Nanne

答えて

1

(今削除された)私のコメントの概要:

私はあなたのコード例では任意のloadXMLを参照していけないが、最初のエラーメッセージは、あなたがしようとしたXMLを伝えますそれが言うことのために負荷が不正です。 Yoshi氏が指摘したように、loadXMLにXML文字列が必要なときにURIをロードしようとしている可能性があります。

2番目のエラーメッセージは、XPath選択式で不明な関数を使用していることを示しています。 libxml/libxsltは、XPath 1.0のみをサポートしています。 msxsl:node-set($docs)は通常のxpath関数ではありません。それはサポートされていません。

名前空間なしで試してください。ちょうどnode-set。それがうまくいかない場合は、msxsl名前空間をルート要素のxmlns:exsl="http://exslt.org/common"に置き換えて、exsl:node-setを試してみてください。

また、私はあなたがここに二つのものを混合していると思いますUnderstanding the node-set() Function

+0

私はあなたが私に提案した名前空間を使用して、それは働いています、ありがとう!だからエラーは私のxsltにあった。 – EnexoOnoma

関連する問題