2016-07-23 2 views
3

내 입력에 내 xslt에서 수정하고 싶은 일부 깨진 태그가 있습니다. 다른 것들을 수색하고 시도했지만, 알아낼 수 없습니다.일부 깨진 태그를 수정하는 방법

입력 :

<p>Some text <span class="italic">broken </span><span class="italic">tag</span><span class="italic">s</span> in my content which is <span class="italic">really </span><span class="italic">annoying</span>.</p>

원하는 출력 :

<p>Some text <span class="italic">broken tags</span> in my content which is <span class="italic">really annoying</span>.</p>

사람이 올바른 방향으로 날 도와 드릴까요?

답변

2

다음은 예제에서 작동하지만 다른 경우에는 충분하지 않을 수 있습니다.

XSLT 2.0

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

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

<xsl:template match="p"> 
    <xsl:copy> 
     <xsl:for-each-group select="node()" group-adjacent="string(@class)"> 
      <xsl:choose> 
       <xsl:when test="current-grouping-key()"> 
        <span class="{current-grouping-key()}"> 
         <xsl:apply-templates select="current-group()/node()"/> 
        </span> 
      </xsl:when> 
      <xsl:otherwise> 
       <xsl:apply-templates select="current-group()"/> 
      </xsl:otherwise> 
     </xsl:choose> 
    </xsl:for-each-group> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 
+0

감사합니다! 이것은 나를 위해 작동합니다. 다른 인라인 요소 (굵게, 강조 등)에 스팬 요소가 중첩되어 있기 때문에 좀 더 복잡하다고 말했던 것처럼 말입니다. 그러나 나는 모든 경우에 대해 호출하는 별도의 템플릿에 그룹화를 배치했습니다. 그것은 지금 나의 경우에 효과적이지만 그것이 올바른 방법인지는 모른다. – Heinrich1971

관련 문제