как перебрать элемент, содержащий закодированный xml в xslt

У меня есть узел в схеме, которая содержит закодированный xml.

После анализа в моем xslt мне нужно пройтись по нему и сделать то, что я должен сделать с точки зрения сопоставления.

Ищу указатели на то, как это должно быть сделано, только что у меня есть

 <xsl:value-of select="*xpath to the encoded xml/text()*" disable-output-escaping="yes"/> 

Но я не уверен, должен ли я помещать это в переменную, мог бы я даже перебрать его, если бы он был в переменной?

Я думаю о сопоставлении закодированного элемента xml с собственной схемой и работе с ним там. есть идеи?


person DarkW1nter    schedule 18.03.2016    source источник


Ответы (1)


Недавно я пытался ответить на аналогичный вопрос здесь: сопоставление строки, содержащей xml в BizTalk

Он включает в себя два отображения с промежуточным форматом между ними:

Пример входного сообщения:

<root>
  <someNode>blabla</someNode>
  <any>&lt;root2&gt;&lt;myValue&gt;escapedXml&lt;/myValue&gt;&lt;/root2&gt;</any>
</root>

Вы можете преобразовать это сообщение в промежуточный формат, в котором вы преобразуете экранированный XML во входном сообщении в его собственную схему.
Вы можете отменить экранирование строки, используя, например, System.Web.HttpUtility.HtmlDecode().

Пример промежуточного формата:

<root>
  <someNode>blabla</someNode>
  <any>
    <root2>
      <myValue>escapedXml</myValue>
    </root2>
  </any>
</root>

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

Во втором сопоставлении, где вы используете промежуточный формат в качестве входных данных, вы можете затем сопоставить свою конечную схему назначения, используя либо средство сопоставления BizTalk, либо, как это делают настоящие BizTalkers, обычный XSLT ;-)

person Pieter Vandenheede    schedule 18.03.2016
comment
Спасибо за это - используйте утилиту С# для декодирования, а затем используйте 2 карты xslt для остальных - person DarkW1nter; 18.03.2016
comment
Просто отметим, что вам не нужно использовать HtmlDecode. Было бы правильнее читать экранированное содержимое с помощью Xml API, чтобы прочитать содержимое в виде строки, затем загрузить, а затем добавить новое дерево узлов. - person Johns-305; 18.03.2016