Мне нужен цикл (xsl:for-each)
через XML, и он вернет x узлов, которые имеют одинаковые имена элементов и макет узла.Можно ли объединить имя переменной в XSLT?
Я хотел бы создать для каждого узла, с которым я сталкиваюсь, и для каждого значения мне нужен логический параметр, который я могу задать отдельно. Я попробовал подход к массиву, но нет значения, возвращаемого, когда я адресую то, что должно быть соответствующим элементом в массиве, и переменная имеет значение, но оно выглядит как одна длинная строка без разделителей.
Так мне было интересно, если я могу создавать нумерованные имена переменных на лету, как variable0, variable1 и т.д.
Я попытался использовать <xsl:variable name="concat(name, position())" />
но это не допускается.
Известно ли вам, как достичь этого или это абсолютно невозможно?
благодаря
данных XML:
<page id="11045138">
<name>SSC NA XML</name>
<description/>
<server>reg6699cic01</server>
<created>2013/11/18 07:16:53 PM</created>
<adhocmessage/>
<workgroups>
<workgroup>
<name>SSC_NA_BWDO_All</name>
<agents>17</agents>
<agentsavailable>2</agentsavailable>
<agentsloggedin>5</agentsloggedin>
<longestavailable>00:01:28</longestavailable>
<longestoutbound>-</longestoutbound>
<longestinbound>-</longestinbound>
<longestnonacd>-</longestnonacd>
<numbernonacd>0</numbernonacd>
<numberoninbound>0</numberoninbound>
<numberoninboundinacw>0</numberoninboundinacw>
<numberonoutbound>0</numberonoutbound>
<numberonoutboundinacw>0</numberonoutboundinacw>
</workgroup>
<workgroup>
<name>SSC_NA_DR_All</name>
<agents>10</agents>
<agentsavailable>0</agentsavailable>
<agentsloggedin>0</agentsloggedin>
<longestavailable>-</longestavailable>
<longestoutbound>-</longestoutbound>
<longestinbound>-</longestinbound>
<longestnonacd>-</longestnonacd>
<numbernonacd>0</numbernonacd>
<numberoninbound>0</numberoninbound>
<numberoninboundinacw>0</numberoninboundinacw>
<numberonoutbound>0</numberonoutbound>
<numberonoutboundinacw>0</numberonoutboundinacw>
</workgroup>
</workgroups>
</page>
XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="html" encoding="utf-8" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="//page/workgroups/workgroup">
<xsl:variable name="foo-elements" select="name"/>
<html>
<head>
<title>testing</title>
</head>
<body>
Body Text<br/>
<xsl:value-of select="$foo-elements[position()]"/>
</body>
</html>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Что я требую, чтобы эти данные будут отображаться в виде таблицы, которая показывает эти значения (и более), как это
Data elements [0] || Data elements [0+1]
Data elements [0+2] || Data elements [0+3]
/ /
Data elements [0+m] || Data elements [0+n]
Это может actualy требуется 3 строки
Data elements [0] || Data elements [0+1] || Data elements [0+2]
Data elements [0+3] || Data elements [0+4] || Data elements [0+5]
/ /
Data elements [0+k] || Data elements [0+l] || Data elements [0+m]
Я надеюсь, что объясняет вкратце, что я пытаюсь достичь. У меня есть что-то, что можно зацикливать и помещает все под друг друга, но затем информация сходит с доски стены, которую нам нужно отображать.
Благодаря
«Одна длинная строка без разделителей», скорее всего, XmlNode. Очевидно, я не могу сказать, не видя ваш код. –
Вы отметили свой вопрос как 'xslt-2.0', но ваш код стилей имеет' version = "1.0" '. Пожалуйста, четко укажите, хотите ли вы решение XSLT 1.0 или 2.0. –
Мне нужен он для Мартина, поэтому я пометил его за это – NiteOwls