XSLT игнорирует некоторыетеги - PullRequest
1 голос
/ 07 июня 2011

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

Это шаблоны, которые я могу добавить из-за размера:

        <xsl:copy>
            <flag sender="me" recipient="you" issueDateTime="02/14/2011">
                <flagSubject> Error </flagSubject>
                <message>
                    <p>r5 Designator Text is empty    </p>
                </message>
            </flag>
            <xsl:apply-templates select="@*| node()"/>
        </xsl:copy>
    </xsl:template>

        <xsl:copy>
            <flag sender="me" recipient="you" issueDateTime="02/14/2011">
                <flagSubject> Error </flagSubject>
                <message>
                    <p>r7 default title is blank    </p>
                </message>
            </flag>
            <xsl:apply-templates select="@*| node()"/>
        </xsl:copy>
    </xsl:template>

        <xsl:copy>
            <flag sender="me" recipient="you" issueDateTime="02/14/2011">
                <flagSubject> Error </flagSubject>
                <message>
                    <p>r7 default title is blank    </p>
                </message>
            </flag>
            <xsl:apply-templates select="@*| node()"/>
        </xsl:copy>
    </xsl:template>

        <xsl:copy>
            <flag sender="me" recipient="you" issueDateTime="02/14/2011">
                <flagSubject> Error </flagSubject>
                <message>
                    <p>r5 Designator Text is empty    </p>
                </message>
            </flag>
            <xsl:apply-templates select="@*| node()"/>
        </xsl:copy>
    </xsl:template>

        <xsl:copy>
            <flag sender="me" recipient="you" issueDateTime="02/14/2011">
                <flagSubject> Error </flagSubject>
                <message>
                    <p>r7 default title is blank    </p>
                </message>
            </flag>
            <xsl:apply-templates select="@*| node()"/>
        </xsl:copy>
    </xsl:template>

Ответы [ 2 ]

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

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

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

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

В предоставленном коде есть два шаблона, каждый из которых переопределяет правило идентификации / шаблон для отдельных элементов.

Тот факт, чтоПервый шаблон «вообще не вставляет элемент» означает, что нет ни одного узла, соответствующего шаблону соответствия этого шаблона.

Если вы предоставите исходный документ XML, многие люди покажут вам, что нетНет такого элемента в этом XML-документе.

В случае, если на самом деле больше шаблонов (которые вы не показывали), то другой возможной причиной является то, что другой шаблон, который также соответствует таким элементам, был выбран из-за более высокогоприоритет - и этот другой шаблон, вероятно, не делает ничего, что могло бы произвести вывод.

Второй шаблон, напротив, очевидно, соответствует элементу (ам) из исходного XML-документа и делает то, для чего предназначенdo.

Резюме : наиболее вероятная проблема с первым шаблоном заключается в том, что он нене соответствует ни одному узлу в документе XML.

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