XHTML.在段落中包含文本并使用XSLT 1.0转换为段落

XHTML.在段落中包含文本并使用XSLT 1.0转换为段落,第1张

概述我正在寻找一种快速简便的方法来使用XSLT 1.0转换他的 XML(类似于XHTML): <?xml version="1.0" encoding="UTF-8"?><html> <head/> <body> <div>Hello<a href="http://google.com">this is the first</a>line.<p>This the second.<br 我正在寻找一种快速简便的方法来使用XSLT 1.0转换他的 XML(类似于xhtml):

<?xml version="1.0" enCoding="UTF-8"?><HTML>  <head/>  <body>    <div>Hello<a href="http://Google.com">this is the first</a>line.<p>This the second.<br/>And this the third one.</p></div>  </body> </HTML>

到这一个:

<?xml version="1.0" enCoding="UTF-8"?><HTML>  <head/>  <body>    <div>        <p>Hello<a href="http://Google.com">this is the first</a>line.</p>        <p>This the second.</p>        <p>And this the third one.</p>    </div>  </body> </HTML>

我在想XSLT 1.0中的树木行走算法.复杂的是,例如随附的< a>链接.并且还存在< p>不应该删除.

愿有人帮我这个吗?非常感谢.

解决方法 这种转变:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/transform"> <xsl:output method="xml" omit-xml-declaration="yes" indent="yes" /> <xsl:strip-space elements="*"/> <xsl:template match="node()|@*">     <xsl:copy>       <xsl:apply-templates select="node()|@*"/>     </xsl:copy> </xsl:template> <xsl:template match="div[text() and p]">  <div>   <p>     <xsl:apply-templates select="node()[not(self::p or preceding-sibling::p)]"/>   </p>   <xsl:apply-templates select="p | p/following-sibling::node()"/>  </div> </xsl:template> <xsl:template match="p[text() and br]">  <xsl:apply-templates/> </xsl:template> <xsl:template match=  "p/text()    [preceding-sibling::node()[1][self::br]    or     following-sibling::node()[1][self::br]    ]">  <p><xsl:value-of select="."/></p> </xsl:template> <xsl:template match="p/br"/></xsl:stylesheet>

当应用于提供的XML文档时:

<HTML>    <head/>    <body>        <div>Hello            <a href="http://Google.com">this is the first</a>line.            <p>This the second.<br/>And this the third one.</p>        </div>    </body></HTML>

产生想要的,正确的结果:

<HTML>   <head/>   <body>      <div>         <p>Hello            <a href="http://Google.com">this is the first</a>line.            </p>         <p>This the second.</p>         <p>And this the third one.</p>      </div>   </body></HTML>
总结

以上是内存溢出为你收集整理的XHTML.在段落包含文本并使用XSLT 1.0转换为段落全部内容,希望文章能够帮你解决XHTML.在段落中包含文本并使用XSLT 1.0转换为段落所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1077038.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存