当前位置:  开发笔记 > Android > 正文

XSLT是否具有Split()函数?

如何解决《XSLT是否具有Split()函数?》经验,为你挑选了4个好方法。

我在节点中有一个字符串,我想将字符串拆分为'?' 并返回数组中的最后一项.

例如,在下面的块中:


    
        /newpage.aspx?
    
    Link text

我想分割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()

更新:这是在特定节点上拆分XML的示例



1> mortenbpost..:

使用递归方法:


     
     
     
     
    
         
    
    
        
             
        
    


很棒的代码.刚提醒我,我有多讨厌XSLT.
我很兴奋尝试这个,但Firefox不幸地说:"在XSLT转换过程中出错:XSLT样式表(可能)包含一个递归." 是的,Firefox应该是递归的......呃......
请注意,如果列表中没有标记,则此模板仍然会输出一个空的``元素,而不是没有``元素.

2> Jacob..:

如果您可以使用XSLT 2.0或更高版本,则可以使用tokenize(string, separator):

tokenize("XPath is fun", "\s+")
Result: ("XPath", "is", "fun")

请参阅w3schools XPath函数参考.

默认情况下,.NET不支持XSLT 2.0,更不用说XSLT 3.0了..NET的唯一已知2.0+处理器是Saxon for .NET带有IKVM的,Exselt,目前处于测试阶段的.NET XSLT 3.0处理器以及XMLPrime XSLT 2.0处理器.


唯一的缺点是它需要XSLT 2.0 :-(

3> travis..:

我最终使用了这个substring-after()功能.这对我有用:


    
        /newpage.aspx?
    
    Link text

即使将我的XSLT版本设置为2.0,我仍然'tokenize()' is an unknown XSLT function.在尝试使用时出现" "错误tokenize().



4> Paul Wagland..:

添加另一种可能性,如果您的模板引擎支持EXSLT,那么您可以使用tokenize().

例如:



...
  
    
      /newpage.aspx?
      
                  
  
...

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有