xsl: for-each не поддерживается в этом контексте - PullRequest
3 голосов
/ 31 мая 2010

У меня есть этот документ XSLT:

<xsl:stylesheet version="1.0" xmlns:mstns="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/MyDocRootElement">
    <xs:schema id="DataSet" targetNamespace="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" >
        <xs:element name="DataSet" msdata:IsDataSet="true">
            <xs:complexType>
                <xs:choice maxOccurs="unbounded">
                    <xs:element name="Somename"> </xs:element>
                    <xs:element name="OtherName">

                    </xs:element>
                    <!-- FOR EACH NOT SUPPORTED? -->
                    <xsl:for-each select="OtherElements/SubElement">
                             <xs:element name="OtherName">

                            </xs:element>
                    </xsl:for-each>
                </xs:choice>
            </xs:complexType>
        </xs:element>
    </xs:schema>
</xsl:template>
</xsl:stylesheet>

У меня есть ошибка проверки, говорящая, что «для каждого элемента не поддерживается в этом контексте»

Я предполагаю, что у него есть что-тоделать с проверкой пространства имен xs.

Любые идеи о том, как я могу сделать эту работу?(Исключить проверку?)

Спасибо, Алекс

Ответы [ 3 ]

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

Обновление

@ alexbf, представивший проблему, заявил в комментарии, что он не выполняет никакой проверки, и ошибка является результатом выполнения преобразования с помощью XslCompiledTransform (.NET).

Я проверил, что таблица стилей компилируется и выполняется с XslCompiledTransform без проблем - как в VS2008, так и с помощью утилиты командной строки nxslt.exe.

Причина ошибки кроется в не показанном коде - коде, который готовит и инициирует преобразование.


Редко, если вообще когда-либо имеет смысл проверять таблицу стилей XSLT!

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

Вторая проблема заключается в том, что вы проверяете таблицу стилей XSLT с помощью схемы не для XSLT, а для другого типа документа ...

Рекомендация : Никогда не пытайтесь проверять свою таблицу стилей XSLT. Проверка имеет значение для ваших пользовательских типов документов, таких как исходный XML-документ (ы), участвующий в обработке XSLT, или документ результата из этой обработки XSLT.

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

Обновление:

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

Это было связано с элементом , который я использовал для хранения временного кода XSLT.

Я удалил весь раздел , и теперь он отлично работает

Извините за путаницу, спасибо за вашу помощь.

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

Я считаю, что это ошибка IDE.

XSLT действителен, он прекрасно компилируется.

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