gpt4 book ai didi

xml - XSLT-搜索和查找特定标签

转载 作者:行者123 更新时间:2023-12-03 16:21:57 25 4
gpt4 key购买 nike

是否可以在XSLT中找到特定的标记并将其替换为其内容?例如,给定以下XML:

<span>Hello world</span>


我们最终会得到以下结果:

Hello world


因此,在任何级别(递归)都将无用和冗余的SPAN标记替换为其内容。我们想找到“裸” span标签(没有属性的标签)并将其替换为它们的内容。

我正在处理无法控制的XML。谢谢。

更新:这是* .XSL文件包含的内容,然后是示例输出:

<xsl:stylesheet 
version="1.0"
exclude-result-prefixes="x d xsl msxsl cmswrt"
xmlns:x="http://www.w3.org/2001/XMLSchema"
xmlns:d="http://schemas.microsoft.com/sharepoint/dsp"
xmlns:cmswrt="http://schemas.microsoft.com/WebParts/v3/Publishing/runtime"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:param name="ItemsHaveStreams">
<xsl:value-of select="'False'" />
</xsl:param>
<xsl:variable name="OnClickTargetAttribute" select="string('javascript:this.target=&quot;_blank&quot;')" />
<xsl:variable name="ImageWidth" />
<xsl:variable name="ImageHeight" />
<xsl:template name="Contact" match="Row[@Style='Contact']" mode="itemstyle">
<div class="outer-container">
<table border="0" cellspacing="0" width="100%">
<tr>
<td class="ms-vb" style="text-align:left; padding:9px;">
<span style="font-weight:bold; border-bottom:1px solid #999;"><xsl:value-of select="@Title"/></span>

<!-- Phone and Emergency Phone -->
<xsl:if test="@Phone != '' or @EmergencyPhone != ''">
<xsl:if test="@Phone != ''">
<xsl:value-of select="@Phone" disable-output-escaping="yes"/><br />
</xsl:if>
<xsl:if test="@EmergencyPhone != ''">
<xsl:value-of select="@EmergencyPhone" disable-output-escaping="yes"/>
</xsl:if>
</xsl:if>

<!-- Email -->
<xsl:if test="@Email != ''">
<span style="text-align:left">E-mail: <a href="mailto:{@Email}"><xsl:value-of select="@Email"/></a></span>
</xsl:if>

<!-- Address & Map -->
<!--
Must test for both empty string and empty div tags, escaped.
-->
<xsl:if test="@Address != '' and @Address !='&lt;div&gt;&lt;/div&gt;'">
<p>Address: <xsl:value-of select="@Address" disable-output-escaping="yes"/></p>
</xsl:if>
<xsl:if test="@Map != ''">
(<a href="{@Map}">MAP</a>)
</xsl:if>

<!-- Opening Hours -->
<xsl:if test="@OpeningHours != ''">
<p><b>Opening Hours:</b></p>
<xsl:value-of select="@OpeningHours" disable-output-escaping="yes"/>
</xsl:if>
</td>
</tr>
</table>
</div>
</xsl:template>
</xsl:stylesheet>


这是当前的示例输出:

Contact Health Services

962-8328
962-8945

Emergency only: 962-8884
After hours, contact Security Dispatch to connect with Health Services staff on duty.

E-mail: health@mydomain.org

Address:
123 Main St.

(MAP)

Opening Hours:
Sunday -Thursday 08:00 -17:30

最佳答案

此XPath将查找所有没有属性的span元素:

//span[not(@*)]




<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>

<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="span[not(@*)]">
<xsl:apply-templates/>
</xsl:template>

</xsl:stylesheet>

关于xml - XSLT-搜索和查找特定标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7055750/

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