2016-07-30 4 views
0

을 나는이 같은 내 입력을 얻을 사용하지 않고 혼합 된 콘텐츠 요소에 공간을 제거 .) 혼합 컨텐츠 모델에서 <i> -element 앞뒤의 공백을 제거합니다.정상화 공간

<p><span class="someclass"/>Tekst<i>italic</>etc..</p>
<p>Tekst<i>italic</i>etc..</p>

이 문제를 해결하는 좋은 방법이 있습니까?

+0

제거 할 공간을 단어로 설명 할 수 있습니까? 'p'의 첫 번째 텍스트 노드 하위의 선행 공간 만? 이 경우 '이 할 수 있습니다. –

답변

0

당신이 다음 XSLT 3.0을 사용하여 p 요소의 첫 번째 text() 자식 노드에서 선두 공백을 제거하면됩니다 할 모든 사용자가 사용할 수있는 경우

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:math="http://www.w3.org/2005/xpath-functions/math" 
    exclude-result-prefixes="xs math" 
    version="3.0"> 

    <xsl:mode on-no-match="shallow-copy"/> 

    <xsl:template match="p/text()[1]"> 
     <xsl:value-of select="replace(., '^\s+', '')"/> 
    </xsl:template> 

</xsl:stylesheet> 

과 같은 <xsl:mode on-no-match="shallow-copy"/> 철자를 XSLT 당신은 2.0을 사용하여 ID 변환 템플릿

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:math="http://www.w3.org/2005/xpath-functions/math" 
    exclude-result-prefixes="xs math" 
    version="2.0"> 

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

    <xsl:template match="p/text()[1]"> 
     <xsl:value-of select="replace(., '^\s+', '')"/> 
    </xsl:template> 

</xsl:stylesheet> 
+0

안녕하세요, 마틴입니다. 다시 답변 해주세요. 나는 p/text() [1]을 사용하여 일종의 작업을하고 있었지만, 문제는 identy 변환 템플릿이었습니다. :) dochoo가 없기 때문에 :) 그래서 같은 결과가 남았습니다. :) – Heinrich1971