XSLT에서 숫자를 캐릭터의 반복으로 어떻게 변환합니까?
문제
다음 입력이 있습니다.
<node TEXT="txt">
<node TEXT="txt">
<node TEXT="txt"/>
<node TEXT="txt"/>
</node>
<node TEXT="txt"/>
</node>
<node TEXT="txt"/>
현재 사용 중입니다.
<xsl:number level="multiple" count="node" format="1"/>
다음 출력을 수신하려면 XSTL 스크립트 내에서 다음과 같습니다.
1 txt
1.1 txt
1.1.1 txt
1.1.2 txt
1.2 txt
2 txt
하지만이 출력을 원합니다.
* txt
** txt
*** txt
*** txt
** txt
* txt
도와주세요?
추신 : 프리메이드 맵을 기본 미디어 위키 목록 구문으로 변환하고 싶습니다. 그리고 네! 나는 미디어 위키에 네이티브 프리메이드지도를 얻는 몇 가지 방법이 있다는 것을 알고 있지만, 나는 <node>
-트리로 ***
-기울기
해결책
이를 수행하는 간단한 방법 중 하나는 결과를 번역하는 것입니다.
<xsl:number/>원하는 형식으로.
이 변형 :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node">
<xsl:variable name="vIndent">
<xsl:number level="multiple" count="node"/>
</xsl:variable>
<xsl:value-of select=
"concat(translate($vIndent,
'1234567890.',
'**********'),
' ',
@TEXT,
'
'
)"/>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
이 XML 문서에 적용될 때 :
<t> <node TEXT="txt"> <node TEXT="txt"> <node TEXT="txt"/> <node TEXT="txt"/></node> <node TEXT="txt"/></node> <node TEXT="txt"/> </t>
원하는 결과를 생성합니다.
* txt ** txt *** txt *** txt ** txt * txt
Translate () 함수를 사용하여 ""를 폐기하십시오. " 문자 및 모든 숫자를 "*"로 변환합니다.
제휴하지 않습니다 StackOverflow