كيفية عدم إخراج مساحة البيضاء في XSLT لعنصر له سمات
-
25-09-2019 - |
سؤال
لدي وثيقة XSLT وأريد إخراج علامة مرساة (أ) مع بعض السمات التي تعتمد قيمها على أشياء أخرى .. وبالتالي ، أستخدم علامة السمة: علامة سمة مع اختيار/إذا تحتها (أو العكس). لذا فإن الكود الخاص بي يشبه هذا:
<a href="/somepage.html">
<xsl:if test="current_page='this_page'">
<xsl:attribute name='class'>active</xsl:attribute>
</xsl:if>
My Page
</a>
ومع ذلك ، فإن المشكلة هي ، في الإخراج HTML ، جميع المساحات/المساحات الجديدة موجودة ، والتي تنتهي بها جعل الرابط الخاص بي يحتوي على مساحة إضافية على يساره (ويتم التأكيد عليه ، مما يجعله واضحًا). لذا فإن الحل الواضح هو القيام بذلك:
<a href="/somepage.html"><xsl:if test="current_page='this_page'"><xsl:attribute name='class'>active</xsl:attribute></xsl:if>My Page</a>
للتخلص من الفضاء. ليست كبيرة جدًا في الصفقة في الكود أعلاه ، ولكن صفحتي الفعلية لديها الكثير من المنطق لها ، مما يجعل هذا قبيحًا حقًا. الشيء الآخر الوحيد الذي يمكنني التفكير فيه لتنظيف هذا هو وضع المنطق خارج توليد الارتباطات ، ولكن بعد ذلك أقوم بتكرار الأمور أكثر وأضطر إلى إنشاء المزيد من المتغيرات. وهو معقول ولكنه لا يزال مثاليًا تمامًا. هذا مجرد مثال واحد أردت فيه القيام بذلك ، لقد حدث عدة مرات أخرى ، لذلك كنت أتساءل فقط عما إذا كانت هناك أي طرق أخرى لحل هذا.
المحلول
ربما يمكنك استخدام هذا في بداية وثيقة XSLT:
<xsl:strip-space elements="a"/>
تحديث، هذا يعمل:
<a href="/somepage.html">
<xsl:if test="current_page='this_page'">
<xsl:attribute name='class'>active</xsl:attribute>
</xsl:if>
<xsl:text>My Page</xsl:text>
</a>
نصائح أخرى
سوف بسيطة xsl:strip-space
في الجزء العلوي من ورقة أنماطك تكون كافية؟
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:strip-space elements="*"/>
...
</xsl:stylesheet>