在SQL Server中将XML Span元素替换为Span标记的内部文本

时间:2016-03-08 21:47:43

标签: sql-server tsql xquery-sql

将span元素替换为其内部文本,其类为" TAGGED_ITEM"在多行中,列为XML

    <Item title="1234" xmlns="http://www.imsglobal.org/xsd/imsqti_v2p2">
        <ItemBody>
        <div class="item_text">
                        <div>
                            <span class="TAGGED_ITEM " id="c1_ae1">This is a map on a grid.</span>
                            <span class="TAGGED_ITEM " id="c1_ae2"> It shows a car.</span>
                        </div>
<span class="TAGGED_ITEM " id="c1_ae3"> It shows a car on Road.</span>
                    </div>
        </ItemBody>
    </Item>

一旦元素更新,它应如下所示。

<Item title="1234" xmlns="http://www.imsglobal.org/xsd/imsqti_v2p2">
        <ItemBody>
        <div class="item_text">
                        <div>
                            This is a map on a grid.
                             It shows a car.
                        </div>
                           It shows a car on Road.
                    </div>
        </ItemBody>
    </Item>

1 个答案:

答案 0 :(得分:1)

这个问题有一个特定的命名空间问题,可能引起了这个问题。消除match=上的命名空间确实解决了问题。因此,身份转换和名称空间中立匹配会产生所需的结果:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">    
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="*[local-name() = 'span']">
    <xsl:value-of select="text()" />
  </xsl:template>   
</xsl:stylesheet>

<强>结果:

<?xml version="1.0"?>
<Item xmlns="http://www.imsglobal.org/xsd/imsqti_v2p2" title="1234">
    <ItemBody>
    <div class="item_text">
                    <div>
                        This is a map on a grid.
                         It shows a car.
                    </div>
                </div>
    </ItemBody>
</Item>