كيفية عدم إخراج مساحة البيضاء في XSLT لعنصر له سمات

StackOverflow https://stackoverflow.com/questions/3807194

  •  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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top