Xsl的p标签内容怎么切分

github_37649319 2017-08-15 02:30:41
<p><xsl:value-of select="Content/LongContent/text()"/></p>
上面是xsl的语句

<LongContent>首都机场贵宾室券首都机场贵宾室券首都机场贵宾室券首都机;场贵宾室券首都机场贵宾室券首都机场贵宾室;券首都机场贵宾室券首都机场贵宾室券首都机场贵宾室券首都机场贵宾室券首都机场贵宾室券首都机场;贵宾室券首都机场贵宾室券首都机场贵宾室券首都机场贵宾室券首都机场贵宾室券首都机场贵宾室券首都机场贵宾室券;;券首都机场贵END</LongContent>
这是要显示的内容

这里需要将内容里的";"作为切分点,最后显示<P>首都机场贵宾室券首都机场贵宾室券首都机场贵宾室券首都机</p>,
<p>场贵宾室券首都机场贵宾室券首都机场贵宾室</p>....
这样子的多个p标签的显示应该怎么实现
...全文
304 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
rickylin86 2017-08-28
  • 打赏
  • 举报
回复

<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<xsl:stylesheet 
	version="2.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xsl:output indent="yes"/>
	<xsl:variable name="content" select="'p1;p2;p3;p4'"/>
	<xsl:template name="main">
		<xsl:call-template name="format">
			<xsl:with-param name="source" select="$content"/>
		</xsl:call-template>
	</xsl:template>
	<xsl:template name="format">
		<xsl:param name="source" as="xs:string"/>
		<xsl:analyze-string regex="^([^;]+);(.*)$" select="$source">
			<xsl:matching-substring>
				<p>
					<xsl:value-of select="regex-group(1)"/>
				</p>
				<xsl:call-template name="format">
					<xsl:with-param name="source" select="regex-group(2)"/>
				</xsl:call-template>
			</xsl:matching-substring>
			<xsl:non-matching-substring>
				<p>
					<xsl:value-of select="$source"/>
				</p>
			</xsl:non-matching-substring>
		</xsl:analyze-string>
	</xsl:template>
</xsl:stylesheet>
解析器:Saxon java net.sf.saxon.Transform -xsl:test.xslt -it:main result:

<?xml version="1.0" encoding="UTF-8"?>
<p xmlns:xs="http://www.w3.org/2001/XMLSchema">p1</p>
<p xmlns:xs="http://www.w3.org/2001/XMLSchema">p2</p>
<p xmlns:xs="http://www.w3.org/2001/XMLSchema">p3</p>
<p xmlns:xs="http://www.w3.org/2001/XMLSchema">p4</p>
微wx笑 2017-08-18
  • 打赏
  • 举报
回复
引用 10 楼 github_37649319 的回复:
[quote=引用 9 楼 testcs_dn 的回复:] [quote=引用 8 楼 github_37649319 的回复:] [quote=引用 5 楼 testcs_dn 的回复:] 看看这个是否能处理 http://bbs.csdn.net/topics/60075280
<xsl:template name="showP"> <xsl:param name="p"/> <xsl:varible name="frontP" select="substring-before($ancillaryProduct/Content/LongContent,';'/> <xsl:varible name="laterP" select="substring-after($ancillaryProduct/Content/LongContent,';'/> <xsl:element name="p"> <xsl:text><xsl:value-of select="$frontP"/></xsl:text> </xsl:element> <xsl:if test="contains($laterP,';')"> <xsl:call-template name="showP"> <xsl:with-param name="P" select="$laterP"/> </xsl:call-template> </xsl:if> </xsl:template> 用这段代码运行出错,请问有什么问题?[/quote] 具体是什么错误呢?[/quote] 现在就是不清楚到哪里去看报错,所以贴在这里想问问有什么错误。。。 那还有个问题怎么看xsl的报错信息呢?[/quote] 是用浏览器打开查看的吗? 打开开发者工具看看控制台有没有提示信息
微wx笑 2017-08-17
  • 打赏
  • 举报
回复
引用 8 楼 github_37649319 的回复:
[quote=引用 5 楼 testcs_dn 的回复:] 看看这个是否能处理 http://bbs.csdn.net/topics/60075280
<xsl:template name="showP"> <xsl:param name="p"/> <xsl:varible name="frontP" select="substring-before($ancillaryProduct/Content/LongContent,';'/> <xsl:varible name="laterP" select="substring-after($ancillaryProduct/Content/LongContent,';'/> <xsl:element name="p"> <xsl:text><xsl:value-of select="$frontP"/></xsl:text> </xsl:element> <xsl:if test="contains($laterP,';')"> <xsl:call-template name="showP"> <xsl:with-param name="P" select="$laterP"/> </xsl:call-template> </xsl:if> </xsl:template> 用这段代码运行出错,请问有什么问题?[/quote] 具体是什么错误呢?
github_37649319 2017-08-17
  • 打赏
  • 举报
回复
引用 9 楼 testcs_dn 的回复:
[quote=引用 8 楼 github_37649319 的回复:] [quote=引用 5 楼 testcs_dn 的回复:] 看看这个是否能处理 http://bbs.csdn.net/topics/60075280
<xsl:template name="showP"> <xsl:param name="p"/> <xsl:varible name="frontP" select="substring-before($ancillaryProduct/Content/LongContent,';'/> <xsl:varible name="laterP" select="substring-after($ancillaryProduct/Content/LongContent,';'/> <xsl:element name="p"> <xsl:text><xsl:value-of select="$frontP"/></xsl:text> </xsl:element> <xsl:if test="contains($laterP,';')"> <xsl:call-template name="showP"> <xsl:with-param name="P" select="$laterP"/> </xsl:call-template> </xsl:if> </xsl:template> 用这段代码运行出错,请问有什么问题?[/quote] 具体是什么错误呢?[/quote] 现在就是不清楚到哪里去看报错,所以贴在这里想问问有什么错误。。。 那还有个问题怎么看xsl的报错信息呢?
github_37649319 2017-08-16
  • 打赏
  • 举报
回复
引用 5 楼 testcs_dn 的回复:
看看这个是否能处理 http://bbs.csdn.net/topics/60075280
<xsl:template name="showP"> <xsl:param name="p"/> <xsl:varible name="frontP" select="substring-before($ancillaryProduct/Content/LongContent,';'/> <xsl:varible name="laterP" select="substring-after($ancillaryProduct/Content/LongContent,';'/> <xsl:element name="p"> <xsl:text><xsl:value-of select="$frontP"/></xsl:text> </xsl:element> <xsl:if test="contains($laterP,';')"> <xsl:call-template name="showP"> <xsl:with-param name="P" select="$laterP"/> </xsl:call-template> </xsl:if> </xsl:template> 用这段代码运行出错,请问有什么问题?
github_37649319 2017-08-15
  • 打赏
  • 举报
回复
引用 5 楼 testcs_dn 的回复:
看看这个是否能处理 http://bbs.csdn.net/topics/60075280
对,就是这个,用递归操作来增加标签量
微wx笑 2017-08-15
  • 打赏
  • 举报
回复
或者参考这个:http://blog.sina.com.cn/s/blog_716de0090101loql.html translate() translate(string,replaced_txt,replacement_txt)函数用来替换字符串,替换string中的所有replaced_txt为replacement_txt.
微wx笑 2017-08-15
  • 打赏
  • 举报
回复
看看这个是否能处理 http://bbs.csdn.net/topics/60075280
github_37649319 2017-08-15
  • 打赏
  • 举报
回复
引用 3 楼 testcs_dn 的回复:
1楼好强; 是使用 xsl 语法进行切分吗?不太明白。
恩,我暂时没有思路,所以没有表达清楚。我刚是想说什么方法切分都可以,js\html\xsl等等能实现就行
微wx笑 2017-08-15
  • 打赏
  • 举报
回复
1楼好强; 是使用 xsl 语法进行切分吗?不太明白。
github_37649319 2017-08-15
  • 打赏
  • 举报
回复
请问这是广告吗。。。
业余草 2017-08-15
  • 打赏
  • 举报
回复
www.xttblog.com www.codedq.net http://www.ndislwf.com 业余草 CODE大全 爱分享 欢迎关注我的个人微信公众号:业余草(yyucao)!

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧