c # XSLT-преобразование не работает, если к XML-файлу присоединена схема? - PullRequest
3 голосов
/ 06 января 2011

У нас странная проблема, мы преобразуем довольно сложный файл XML, используя несколько файлов XSLT, это не проблема.

Проблема в том, что если файл XML присоединен к схеме, преобразование не выполняется.сработает, если мы удалим объявление схемы, оно начинает работать нормально.

Любые подсказки, в чем будет проблема?

Вот отклонение схемы

<xs:schema id="play"
targetNamespace="highway"
elementFormDefault="qualified"
xmlns="highway"
xmlns:mstns="highway"
xmlns:xs="http://www.w3.org/2001/XMLSchema">

И мыпросто используете следующий код для его связывания (Visual Studio Intellisense затем запускается)

<helloElement name="hello" xmlns="highway">

Я ценю, что это не так уж и много, не уверен, что предложить в плане симптомов, дайте мне знать, если вынужна информация.

Большое спасибо!

Ответы [ 2 ]

5 голосов
/ 06 января 2011

Проблема не в схеме, проблема в объявлении пространства имен xmlns="highway", которое ваши таблицы стилей должны учитывать, например,

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:hw="highway"
  version="1.0">

  <xsl:template match="hw:helloElement">
    ...
  </xsl:template>

</xsl:stylesheet>

и т. Д. Везде, где вы подходите или выбираете элемент, для которого нужно использовать префикс.

2 голосов
/ 06 января 2011

Когда вы добавляете объявление схемы, вы добавляете пространство имен по умолчанию в ваш XML-документ (xmlns="highway"), которого раньше не было.Затем это повлияет на интерпретацию ссылок на элементы и XPATH в XSLT, потому что все ваши элементы больше не <someElement>, а <highway:someElement>.Проверьте эту ссылку для получения дополнительной информации.

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