Dot-Net

XSLT 有 Split() 函式嗎?

  • September 25, 2008

我在節點中有一個字元串,我想將字元串拆分為“?” 並返回數組中的最後一項。

例如,在下面的塊中:

<a>
   <xsl:attribute name="href">
       /newpage.aspx?<xsl:value-of select="someNode"/>
   </xsl:attribute>
   Link text
</a>

我想拆分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 的範例

使用遞歸方法:

<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>

引用自:https://stackoverflow.com/questions/136500