Невозможно загрузить огромный XML-документ (ошибочно предположить, что это связано с обработкой XSLT) - PullRequest
1 голос
/ 01 мая 2010

Я пытаюсь сопоставить определенные элементы, используя XSLT. Мой входной документ очень большой, и исходный XML-файл не загружается после обработки следующего кода (особенно это касается первой строки).

    <xsl:template match="XMI/XMI.content/Model_Management.Model/Foundation.Core.Namespace.ownedElement/Model_Management.Package/Foundation.Core.Namespace.ownedElement">
    <rdf:RDF>
        <rdf:Description rdf:about="">

            <xsl:for-each select="Foundation.Core.Class">       
                <xsl:for-each select="Foundation.Core.ModelElement.name">
                    <owl:Class rdf:ID="@Foundation.Core.ModelElement.name" />
                </xsl:for-each>
            </xsl:for-each>     

        </rdf:Description>
    </rdf:RDF>
</xsl:template>

Очевидно, XSLT не загружается после " Model_Management.Model ". Код PHP выглядит следующим образом:

    if ($xml->loadXML($source_xml) == false) {
    die('Failed to load source XML: ' . $http_file);
}

Затем он не может выполнить loadXML и сразу же умирает. Я думаю, что есть два варианта сейчас.

1) Я должен установить максимальное время выполнения. Честно говоря, я не знаю, как это сделать для встроенного процессора PHP 5 XSLT. 2) Подумайте о другом способе сопоставления.

Как лучше всего с этим справиться?

Входной документ можно найти по адресу http://krisvandenbergh.be/uml_pricing.xml

Любая помощь будет принята с благодарностью! Спасибо.

1 Ответ

0 голосов
/ 01 мая 2010

Если вы можете найти совпадение на XMI.content, то это не "." в Model_Management.Model, которая отбрасывает вас.

Мне кажется, что, поскольку вы ищете элементы, расположенные на 6 слоев ниже, возможно, существует более простое решение. Вы пробовали это:

<xsl:template match="Foundation.Core.Namespace.ownedElement">
    <!-- other code -->
</xsl:template>

Совпадение в теге шаблона обычно не должно быть таким конкретным. select в вашем <xsl:apply-templates>, где вы вызываете шаблон, должно быть как можно более конкретным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...