모든 라인 브레이크를 어떻게 제거합니까?
-
11-07-2019 - |
문제
나는 다음과 같은 것이 있습니다.
<node TEXT=" txt A "/>
<node TEXT="
txt X
"/>
<node>
<html>
<p>
txt Y
</p>
</html>
</node>
<node TEXT="txt B"/>
그리고 나는 이것을 얻기 위해 XSLT를 사용하고 싶습니다.
txt A
txt X
txt Y
txt B
@text와 cdata의 모든 쓸모없는 공백과 라인 브레이크를 제거하고 싶습니다. 출력에 구조를 제공하는 유일한 XML 입력은 다음과 같습니다. <node>
-태그.
해결책
다음 변환 :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/>
<xsl:template match="*">
<xsl:apply-templates select="@TEXT | node()"/>
</xsl:template>
<xsl:template match="node/@TEXT | text()">
<xsl:if test="normalize-space(.)">
<xsl:value-of select=
"concat(normalize-space(.), '
')"/>
</xsl:if>
<xsl:apply-templates />
</xsl:template>
</xsl:stylesheet>
이 XML 문서에 적용될 때
<t> <node TEXT=" txt A "/> <node TEXT=" txt X"/> <node> <html> <p> txt Y </p> </html> </node> <node TEXT="txt B"/> </t>
원하는 결과를 생성합니다.
txt a
txt x
txt y
txt b
표준 XPath 함수의 사용에 유의하십시오 정상화 공간 (), 모든 선행 및 후행 공간을 벗어나 다른 공간의 모든 시퀀스를 하나의 공간으로 대체합니다.
제휴하지 않습니다 StackOverflow