gpt4 book ai didi

list - 使用 xSTL 将纯文本转换为 html 样式列表,或使用 xslt 根据元素的内容和位置对元素进行分组

转载 作者:行者123 更新时间:2023-12-04 06:42:49 24 4
gpt4 key购买 nike

尝试使用 xslt 将纯文本文档转换为 html 文档时,我正在为无序列表而苦苦挣扎。

我有:

<item>some text</item>
<item>- a list item</item>
<item>- another list item</item>
<item>more plain text</item>
<item>more and more plain text</item>
<item>- yet another list item</item>
<item>even more plain text</item>

我想要的是:
<p>some text</p>
<ul>
<li>a list item</li>
<li>another list item</li>
</ul>
<p>more plain text</p>
<p>more and more plain text</p>
<ul>
<li>yet another list item</li>
</ul>
<p>even more plain text</p>

我正在查看 Muenchian 分组,但它会将所有列表项合并为一组,将所有纯文本项合并为另一组。然后我尝试只选择前面元素第一个字符与其第一个字符不同的项目。但是当我尝试组合所有内容时,我仍然将所有 li 归入一个 ul。

你对我有什么提示吗?

最佳答案

本次改造 :

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:key name="kFollowing"
match="item[contains(., 'list')]
[preceding-sibling::item[1][contains(.,'list')]]"
use="generate-id(preceding-sibling::item
[not(contains(.,'list'))]
[1]
/following-sibling::item[1]
)"/>

<xsl:template match="item[contains(.,'list')]
[preceding-sibling::item[1][not(contains(.,'list'))]]">

<ul>
<xsl:apply-templates mode="list"
select=".|key('kFollowing',generate-id())"/>
</ul>
</xsl:template>

<xsl:template match="item" mode="list">
<li><xsl:value-of select="."/></li>
</xsl:template>

<xsl:template match="item[not(contains(.,'list'))]">
<p><xsl:value-of select="."/></p>
</xsl:template>

<xsl:template match="item[contains(.,'list')]
[preceding-sibling::item[1][contains(.,'list')]]"/>
</xsl:stylesheet>

当应用于提供的 XML 文档时 (从严重格式错误更正为格式良好的 XML 文档):
<t>
<item>some text</item>
<item>- a list item</item>
<item>- another list item</item>
<item>more plain text</item>
<item>more and more plain text</item>
<item>- yet another list item</item>
<item>even more plain text</item>
</t>

产生想要的、正确的结果 :
<p>some text</p>
<ul>
<li>- a list item</li>
<li>- another list item</li>
</ul>
<p>more plain text</p>
<p>more and more plain text</p>
<ul>
<li>- yet another list item</li>
</ul>
<p>even more plain text</p>

关于list - 使用 xSTL 将纯文本转换为 html 样式列表,或使用 xslt 根据元素的内容和位置对元素进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4042649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com