Выбор данных из XML с использованием XSLT? - PullRequest
3 голосов
/ 03 января 2011

Хорошо, поэтому у меня есть product.xml и product.xsl

В product.xml говорят, что у меня есть два бита данных

<productInfo productID="Product1">
<title>Product One</title>
</productInfo>

<productInfo productID="Product2">
<title>Product Two</title>
</productInfo>

В моем product.xsl можно отобразитьтолько один набор данных в зависимости от параметра productID?

Так что, если product.xml загружался как product.xml? ProductID = Product1 , как я могу показать только данные Product1?

Я пытался получить значение productIDиз URL, но это не работает ..

<xsl:param name="productID" />
<xsl:value-of select="$productIDParam"/>

Возможно ли то, что я пытаюсь сделать, просто используя XML и XSLT?

Ответы [ 2 ]

1 голос
/ 03 января 2011

Так что, если product.xml загружался как product.xml? ProductID = Product1

как можно Я только показываю данные Product1?

Я пытался получить значение productID с URL, но это не работает ..

<xsl:param name="productID" />
<xsl:value-of select="$productIDParam"/> 

Это то, что я пытаюсь сделать даже возможно только с использованием XML и XSLT?

Перед началом преобразования необходимо получить значение переменной запроса productId, а затем передать это значение в качестве значения внешнего параметра глобального уровня .

Различные процессоры XSLT имеют разные API для достижения этой цели. Например, процессор .NET XslCompiledTransform достигает этого, используя экземпляры класса XsltArgumentList, переданного в качестве аргументов его Transform() метод.

Вот полный пример кода :

using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;

public class Sample {

   public static void Main() {

      // Create the XslCompiledTransform and load the style sheet.
      XslCompiledTransform xslt = new XslCompiledTransform();
      xslt.Load("discount.xsl");

      // Create the XsltArgumentList.
      XsltArgumentList argList = new XsltArgumentList();

      // Calculate the discount date.
      DateTime orderDate = new DateTime(2004, 01, 15);
      DateTime discountDate = orderDate.AddDays(20);
      argList.AddParam("discount", "", discountDate.ToString());

      // Create an XmlWriter to write the output.             
     XmlWriter writer = XmlWriter.Create("orderOut.xml");

     // Transform the file.
     xslt.Transform(new XPathDocument("order.xml"), argList, writer);
     writer.Close();

  }

}

Поэтому вам необходимо прочитать документацию по вашему XSLT-процессору , чтобы узнать, как передавать внешние параметры в преобразование.

0 голосов
/ 03 января 2011

XSLT позволяет вам определять глобальные параметры с элементами верхнего уровня xsl:param, которые должны устанавливаться извне процессора XSLT, в основном программно с помощью API процессора XSLT.Если вы хотите считывать параметры строки запроса в URL-адресе, вам нужно сделать это с помощью клиентского или серверного языка по вашему выбору (то есть, в основном, Javascript на клиенте или различных сред / языков, таких как ASP.NET, Servlet,PHP на сервере), а затем запустите преобразование с любым API, доступным для этого языка или этой платформы).Таким образом, вы можете передать параметры строки запроса в таблицу стилей XSLT.

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