Как обработать более одного XML-документа в XSLT? - PullRequest
1 голос
/ 12 мая 2010

Есть ли хитрость для сопоставления двух XML одним XSLT? Я имею в виду способ применения XSLT к переданному параметру.

Например (я пропустил объявления, чтобы быть коротким). XML1: XML для преобразования:

<myData>
   <Collection>

   </Collection>
</myData>

XSLT необходимо применить к предыдущему XML:

<xsl:param name='items' />
<xsl:template match='Collection'>
    <!-- some transformation here -->
</xsl:template>

XML2: данные XML, передаваемые как параметр 'items':

<newData>
   <Item>1</Item>
   <Item>2</Item>
   <Item>3</Item>
</newData>

И мне нужно создать набор узлов в узле «Коллекция» в XML1 для каждого элемента «Элемент» в XML2, используя XSLT. И я не знаю, что именно содержит XML2 во время разработки. Он генерируется во время выполнения, поэтому я не могу поместить его в XSLT, я знаю только его схему.

Ответы [ 2 ]

1 голос
/ 12 мая 2010

Прочтите и используйте стандартную функцию XSLT document().

1 голос
/ 12 мая 2010

(1). Вы можете создать XSLT вместо статического XSLT:

преобразовать xml2 с помощью xslt1, что приводит к xslt2
преобразовать xml1 с помощью xslt2, что приведет к желаемому результату

(2). Вы можете использовать функцию document() для загрузки xml2. Это требует, чтобы xml2 был сохранен на диске или был доступен для URI.

      <xsl:copy-of select="document('xml2.xml')//newData" />  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...