XSLT для фильтрации XML-документов с помощью JavaScript - PullRequest
1 голос
/ 24 октября 2011

Я хочу использовать какую-то XML-фильтрацию, используя javascript w / jQuery. Я еще не очень знаком с xslt. Я видел, что для этого документа всегда есть документ XML и определенный стиль (XSL). Затем результат отображается в XHTML. Я действительно просто хочу получить некоторый XML, отфильтровать (по имени узла, некоторому атрибуту и ​​т. Д.) И сгенерировать (отфильтрованную / уменьшенную) версию этого xml. Как вы думаете, xslt подход является самым простым?

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 24 октября 2011

Я действительно просто хочу получить XML-фильтр (по имени узла, некоторые атрибут и т. д.) и сгенерировать (отфильтрованную / уменьшенную) версию этого xml. Как вы думаете, xslt подход самый простой?

XSLT - это язык, который был специально разработан для преобразования древовидного ввода. Вот почему это, вероятно, лучший и самый простой способ реализации таких задач.

Вот пример :

<nums>
  <num>01</num>
  <num>02</num>
  <num>03</num>
  <num>04</num>
  <num>05</num>
  <num>06</num>
  <num>07</num>
  <num>08</num>
  <num>09</num>
  <num>10</num>
</nums>

Мы хотим создать из этого документа XML другой документ, который имеет такую ​​же структуру и имя / содержание элемента, но содержит только те элементы num из исходного документа, значение которых кратно 3.

Вот преобразование, чтобы выполнить это :

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="num[not(. mod 3) = 0]"/>
</xsl:stylesheet>
1 голос
/ 24 октября 2011

Если вы хотите обработать XML-документ и вернуть другой XML-документ, подход XSLT, вероятно, будет лучшим.

Если вы хотите извлечь только несколько узлов из вашего XML и отобразить их, встроенныйв javascript функциональности должно быть достаточно.

var title = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;

var lang = xmlDoc.getElementsByTagName("title")[0].getAttribute("lang");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...