Возможно, у меня довольно специфический вопрос.
У меня есть пользователь, который вводит в форму некоторые критерии, а затем он строит XPath из их ввода.Допустим, их ввод создает следующее:
//*[@color='red']/@*
Что по сути означает, что они хотят видеть все атрибуты любого элемента с @color = red.
Я могу отобразить именно то, что просит выражениеfor (все атрибуты), но я хотел добавить информацию, которая могла бы быть полезной, например, имя элемента, к которому принадлежат атрибуты.
Один из вариантов - добавить в XPath и отобразить имя элемента: (более короткий способ создания этого выражения без использования | было бы неплохо знать .. поэтому, если у вас есть предложения, это было бы здорово!)
//*[@color='red']/@* | //*[@color='red']
Другой вариант (которыйЯ надеюсь, что это возможно), чтобы выбрать имя элемента, которому принадлежит атрибут, из шаблона без изменения выражения XPath (потому что я мог бы использовать это выражение в другом контексте без имени элемента).
I хочу иметь этот XSLT:
<xsl:param name="built_expression" select="//*[@color='red']/@* />
<xsl:template match="/">
<html>
<body>
<table>
<tr>
<th>Element Name</th>
<th>Element Content</th>
</tr>
<xsl:apply-templates select="$built_expression"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="@*|node()">
<tr>
<td>
<xsl:value-of select="ELEMENT name()" />
</td>
<td>
<xsl:value-of select="node()" />
</td>
</tr>
... other display stuff to do with the attributes ...
</xsl:template>
Это, очевидно, не работает ... но я надеюсь, что вы поняли мою точку зрения ...
<xsl:value-of select="name()"/>
просто возвращает имя атрибута, но мне нужно выбрать имя элемента атрибута.
Спасибо!Дайте мне знать, если мне нужно что-то уточнить!