문제

다음 입력이 있습니다.

<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,
         '&#xA;'
         )"/>
 <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 () 함수를 사용하여 ""를 폐기하십시오. " 문자 및 모든 숫자를 "*"로 변환합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top