Получение нескольких документов xml из одного xslt

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

Я ссылаюсь на дополнительный документ, подобный этому, в test.xsl.

<xsl:value-of select="document('/customercare/library/test/test1.xml')/resources/resource/name" />

Это xml test1.xml.

<resources>
    <resource>  
        <name>configuration</name>
    </resource> 
</resources>

Это вызов фрагмента на моей странице asp index.aspx.

<%
            Dim mm_xsl As MM.XSLTransform = new MM.XSLTransform()
            mm_xsl.setXML(Server.MapPath("/customercare/library/test/test2.xml"))
            mm_xsl.setXSL(Server.MapPath("/customercare/library/test/test.xsl"))            
            Response.write(mm_xsl.Transform())
        %>

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

Мой вопрос: как мне получить оба XML-документа из одного xslt?

Спасибо


person BillZ    schedule 19.10.2009    source источник


Ответы (3)


Взгляните на функцию document().

В этой статье представлен обзор его использования.

person pmarflee    schedule 19.10.2009

Когда я использую XML-документы так, как вы описываете (т.е. как таблицы поиска, на которые нужно ссылаться во время преобразования), я обычно загружаю их в переменные в верхней части моего преобразования:

<xsl:stylesheet...>
   <xsl:variable name='resources' select=document('resources.xml')/>
   <xsl:variable name='products' select="$resources/resources/products/product"/>

Затем я могу искать информацию из этих переменных везде, где это уместно, например:

<xsl:template match='product'>
   <tr>
      <td>
         <xsl:value-of select='@id'/>
      </td>
      <td>
         <xsl:value-of select='@description'/>
      <td>
      <td>
         <img src='{$products[@id=current()/@id]/image}'/>
      </td>
  </tr>
<xsl:template>
person Robert Rossney    schedule 21.10.2009

Конечно, вы можете дважды использовать функцию xsl:document() в таблице стилей. Но почему ты так хочешь? Кажется, нет никакой очевидной причины для этого.

Другими вариантами являются функция fn:doc() XPath или элемент xsl:document.

person Community    schedule 21.10.2009