使用正则表达式解析字符串后创建并 return 一个节点列表
create and return a Nodelist after parsing a string with regex
我正在尝试创建一个 java 函数以在我的样式表中使用,该函数将根据正则表达式字符和 return 节点列表拆分字符串。
例如,我希望我的样式表是这样的:
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xalan"
version="1.0">
<xsl:template match="/">
<Root>
<xsl:copy-of select="re:splitRegex('This is my string', '\s\s+')"/>
</Root>
</xsl:template>
</xsl:stylesheet>
我希望我的结果 XML 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<Root xmlns:stash="xalan://com.nxtech.util.io.Stash">
<token>This</token>
<token>is</token>
<token>my</token>
<token>string</token>
</Root>
我的 java 代码中有这个函数,return 是一个字符串数组:
public static String[] split(String toSplit,String regex) {
return toSplit.split(regex);
}
但我需要 return 是 NodeList
的东西,或者任何能正确格式化我的 XML 文件的东西。
我同意 Martin 的观点,最好在 XSLT 2.0.
中执行此操作
但是如果您更喜欢 Xalan / Java 方法,那么:
解决方案 #1
更改您的 Java 函数,使其 return 串联
令牌,"enveloped" 在 token
标签(开始和结束)之间。
`<token>...</token>`
(在每个</token>
之后加上\n
)。
return编辑的内容应该在打开和关闭之间写出来
根 标签。
解决方案 #2
如果您出于其他原因需要 node-set
,您可以按如下方式进行:
在stylesheet
标签中包括:
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl"
您的拆分函数应该 return 一个连接的字符串(如上所述)。
然后在适当的地方写上:
<xsl:variable name="wrk">
<xsl:value-of select="re:splitRegex('This is my string', '\s\s+')"/>
</xsl:variable>
<xsl:variable name="tokens" select="exsl:node-set($wrk)"/>
node-set
函数将 Result Tree Fragment 更改为 "proper" node-set
你可以使用例如在 XPath 中或以任何其他方式。
我正在尝试创建一个 java 函数以在我的样式表中使用,该函数将根据正则表达式字符和 return 节点列表拆分字符串。
例如,我希望我的样式表是这样的:
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xalan"
version="1.0">
<xsl:template match="/">
<Root>
<xsl:copy-of select="re:splitRegex('This is my string', '\s\s+')"/>
</Root>
</xsl:template>
</xsl:stylesheet>
我希望我的结果 XML 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<Root xmlns:stash="xalan://com.nxtech.util.io.Stash">
<token>This</token>
<token>is</token>
<token>my</token>
<token>string</token>
</Root>
我的 java 代码中有这个函数,return 是一个字符串数组:
public static String[] split(String toSplit,String regex) {
return toSplit.split(regex);
}
但我需要 return 是 NodeList
的东西,或者任何能正确格式化我的 XML 文件的东西。
我同意 Martin 的观点,最好在 XSLT 2.0.
中执行此操作但是如果您更喜欢 Xalan / Java 方法,那么:
解决方案 #1
更改您的 Java 函数,使其 return 串联
令牌,"enveloped" 在 token
标签(开始和结束)之间。
`<token>...</token>`
(在每个</token>
之后加上\n
)。
return编辑的内容应该在打开和关闭之间写出来 根 标签。
解决方案 #2
如果您出于其他原因需要 node-set
,您可以按如下方式进行:
在stylesheet
标签中包括:
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl"
您的拆分函数应该 return 一个连接的字符串(如上所述)。
然后在适当的地方写上:
<xsl:variable name="wrk">
<xsl:value-of select="re:splitRegex('This is my string', '\s\s+')"/>
</xsl:variable>
<xsl:variable name="tokens" select="exsl:node-set($wrk)"/>
node-set
函数将 Result Tree Fragment 更改为 "proper" node-set
你可以使用例如在 XPath 中或以任何其他方式。