كيف يمكنني تحويل رقم إلى تكرار الأحرف في 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
هل يمكنك مساعدتي؟
وPS: أريد تحويل خريطة freemind لتركيب قائمة ميدياويكي الأساسي. ونعم! وأنا أدرك أن هناك العديد من الطرق للحصول على خرائط freemind الأم في الويكي وسائل الإعلام، ولكن أنا في حاجة إلى تحويل <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
لاحظ استخدام وظيفة ترجمة () لتجاهل أي "." شخصيات ولترجمة أي رقم إلى "*".
لا تنتمي إلى StackOverflow