tra*_*vis 43 .net xml vb.net xslt split
我在节点中有一个字符串,我想将字符串拆分为'?' 并返回数组中的最后一项.
例如,在下面的块中:
<a>
<xsl:attribute name="href">
/newpage.aspx?<xsl:value-of select="someNode"/>
</xsl:attribute>
Link text
</a>
Run Code Online (Sandbox Code Playgroud)
我想分割someNode
价值.
编辑:这是我用来为我的Asp.Net页面加载Xsl的VB.Net:
Dim xslDocPath As String = HttpContext.Current.Server.MapPath("~/App_Data/someXslt.xsl")
Dim myXsltSettings As New XsltSettings()
Dim myXMLResolver As New XmlUrlResolver()
myXsltSettings.EnableScript = True
myXsltSettings.EnableDocumentFunction = True
myXslDoc = New XslCompiledTransform(False)
myXslDoc.Load(xslDocPath, myXsltSettings, myXMLResolver)
Dim myStringBuilder As New StringBuilder()
Dim myXmlWriter As XmlWriter = Nothing
Dim myXmlWriterSettings As New XmlWriterSettings()
myXmlWriterSettings.ConformanceLevel = ConformanceLevel.Auto
myXmlWriterSettings.Indent = True
myXmlWriterSettings.OmitXmlDeclaration = True
myXmlWriter = XmlWriter.Create(myStringBuilder, myXmlWriterSettings)
myXslDoc.Transform(xmlDoc, argumentList, myXmlWriter)
Return myStringBuilder.ToString()
Run Code Online (Sandbox Code Playgroud)
更新:这是在特定节点上拆分XML的示例
mor*_*ost 52
使用递归方法:
<xsl:template name="output-tokens">
<xsl:param name="list" />
<xsl:variable name="newlist" select="concat(normalize-space($list), ' ')" />
<xsl:variable name="first" select="substring-before($newlist, ' ')" />
<xsl:variable name="remaining" select="substring-after($newlist, ' ')" />
<id>
<xsl:value-of select="$first" />
</id>
<xsl:if test="$remaining">
<xsl:call-template name="output-tokens">
<xsl:with-param name="list" select="$remaining" />
</xsl:call-template>
</xsl:if>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
Jac*_*cob 11
如果您可以使用XSLT 2.0或更高版本,则可以使用tokenize(string, separator)
:
tokenize("XPath is fun", "\s+")
Result: ("XPath", "is", "fun")
Run Code Online (Sandbox Code Playgroud)
默认情况下,.NET不支持XSLT 2.0,更不用说XSLT 3.0了..NET的唯一已知2.0+处理器是Saxon for .NET带有IKVM的,Exselt,目前处于测试阶段的.NET XSLT 3.0处理器以及XMLPrime XSLT 2.0处理器.
我最终使用了这个substring-after()
功能.这对我有用:
<a>
<xsl:attribute name="href">
/newpage.aspx?<xsl:value-of select="substring-after(someNode, '?')"/>
</xsl:attribute>
Link text
</a>
Run Code Online (Sandbox Code Playgroud)
即使将我的XSLT版本设置为2.0,我仍然'tokenize()' is an unknown XSLT function.
在尝试使用时出现" "错误tokenize()
.
添加另一种可能性,如果您的模板引擎支持EXSLT,那么您可以使用tokenize().
例如:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:str="http://exslt.org/strings"
extension-element-prefixes="str">
...
<a>
<xsl:attribute name="href">
<xsl:text>/newpage.aspx?</xsl:text>
<xsl:value-of select="str:tokenize(someNode)[2]"/>
</xsl:attribute>
</a>
...
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
57788 次 |
最近记录: |