2013-09-28 12 views
6

W arkuszu stylów XSLT, jak usunąć wiodące i końcowe spacje wewnątrz znacznika <xsl:attribute>?Jak usunąć białe spacje z tagu <xsl: attribute>?

Na przykład, następujący arkusz stylów:

<xsl:template match="/"> 
    <xsl:element name="myelement"> 
    <xsl:attribute name="myattribute"> 
     attribute value 
    </xsl:attribute> 
    </xsl:element> 
</xsl:template> 

wyjścia:

<myelement myattribute="&#10;  attribute value&#10; "/> 

natomiast chciałbym go do wyjścia:

<myelement myattribute="attribute value"/> 

Czy istnieje jakiś sposób, aby osiągnąć ten drugi niż zwijanie znaczników początkowych i końcowych <xsl:attribute> w jednym wierszu?

Ponieważ jeśli wartość atrybutu nie jest zwykłym wierszem tekstu, ale wynikiem niektórych złożonych obliczeń (na przykład użycie lub znaczników), to zawinięcie całego kodu w jedną linię w celu uniknięcia początkowych i końcowych białych znaków spowoduje okropnie brzydki arkusz stylów.

Odpowiedz

6

Można zawinąć tekst przez xsl: text lub xsl: value-of:

<xsl:template match="/"> 
    <xsl:element name="myelement"> 
     <xsl:attribute name="myattribute"> 
      <xsl:text>attribute value</xsl:text> 
     </xsl:attribute> 
    </xsl:element> 
</xsl:template> 

lub

<xsl:template match="/"> 
    <xsl:element name="myelement"> 
     <xsl:attribute name="myattribute"> 
      <xsl:value-of select="'attribute value'"/> 
     </xsl:attribute> 
    </xsl:element> 
</xsl:template> 

Jest to przydatne dla Ciebie? W przeciwnym razie prosimy o wyjaśnienie problemu z wykorzystaniem pojedynczej linii.

Proszę zwrócić uwagę na komentarz Michaela Kaya, to wyjaśnia problem do rzeczy!

+0

Problem polega na tym, że jeśli wartość atrybutu jest wynikiem niektórych złożonych obliczeń, na przykład z elementami '', to zawinięcie całego kodu w jednym wierszu w celu uzyskania pożądanego wyniku spowoduje, że arkusz stylów będzie wyglądał okropnie brzydko. –

+2

Możesz użyć linebreaks między xsl: attribute i xsl: choose. Po prostu trzeba unikać łamania linii w węzłach tekstowych. Wszystkie linie podziału w węźle tekstowym zostaną znalezione w danych wyjściowych. Wszystkie linie podziału między elementami xsl zostaną odrzucone. –

+1

OK, rozumiem. W moim prawdziwym przypadku '' został "oskrzydlony" przez węzły tekstowe; zawijanie każdego w '' skutecznie usuwa białe znaki. Problem rozwiązany, dzięki! –

Powiązane problemy