Ошибка при загрузке и загрузке XML с использованием DOM - PullRequest
1 голос
/ 22 июня 2011

Я пытаюсь загрузить файл XML, но я получаю следующие ошибки, либо я использую 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>

1 Ответ

1 голос
/ 22 июня 2011

Сводка моих комментариев (теперь удалена):

Хотя я не вижу никаких loadXML в вашем примере кода, первое сообщение об ошибке говорит вам, что XML, который вы пытались загрузить, искажен из-за того, что он говорит,Как указывал Йоши, вы можете пытаться загрузить URI, когда loadXML ожидает строку XML.

Второе сообщение об ошибке подразумевает, что вы используете неизвестную функцию в выражении выбора XPath. libxml / libxslt поддерживает только XPath 1.0.msxsl:node-set($docs) не является обычной функцией xpath.не поддерживается.

Попробуйте без пространства имен, например, просто node-set.Если это не сработает, замените пространство имен msxsl на xmlns:exsl="http://exslt.org/common" в корневом элементе и попробуйте на exsl:node-set.

См. Также Основные сведения о функции node-set ()

...