Как мне получить только те узлы, которые имеют имя, начинающееся с "tag" и заканчивающееся на "DescRes"? Я использую XMLDataSource и GridView (ASP.NET 3.5) для отображения XML. Ничего фантастического. Если значения должны быть жестко закодированы в XSLT, это тоже нормально.
<data name="tagoneCtrlNumberRes.Text" xml:space="preserve">
<value>1.</value>
<comment>A01</comment>
</data>
<data name="tagoneCtrlDescRes.Text" xml:space="preserve">
<value>Hello</value>
<comment>A01</comment>
</data>
<data name="tagoneCtrlNoteRes.Text" xml:space="preserve">
<value>Hi</value>
<comment>A01</comment>
</data>
Если я начну с этого XML, я бы хотел, чтобы результирующий XML после применения XSLT отображал:
<data name="tagoneCtrlDescRes.Text" xml:space="preserve">
<value>Hello</value>
<comment>A01</comment>
</data>
Вот мой 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:param name="sortby"></xsl:param>
<xsl:param name="orderas"></xsl:param>
<xsl:output method="xml" indent="yes"/>
<!--<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>-->
<xsl:template match="root">
<root>
<xsl:apply-templates select="data">
<xsl:sort select="*[name()=$sortby]|@*[name()=$sortby]" data-type="text" order="{$orderas}"/>
</xsl:apply-templates>
</root>
</xsl:template>
<xsl:template match="data">
<data>
<xsl:attribute name="comment">
<xsl:value-of select="comment" />
</xsl:attribute>
<xsl:attribute name="ctrlname">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="value" />
</xsl:attribute>
</data>
</xsl:template>
</xsl:stylesheet>