2

Xsl 変換を使用して、Xml データを Html として表示しています。

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:ms="urn:schemas-microsoft-com:xslt"
 xmlns:util="urn:the-xml-files:xslt">
 <xsl:output method="xml" indent="yes"
  omit-xml-declaration="yes" encoding="utf-8"/>

 <xsl:template match="/">
     <xsl:for-each select="/Categories/Category">
       <li class="c">
         <a class="d">
          <xsl:attribute name="id">cat_<xsl:value-of select="categoryid"/></xsl:attribute>
         </a>
       </li>
     </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>

li 要素の id 属性の select が 1 行にない場合、XSL プロセッサは属性値を空白で埋め、フロント エンドの JavaScript を完全に壊します。

もちろん、Visual Studio は常に多くの定義を 1 行で再フォーマットするため、何かを変更した場合は手動で空白を削除する必要があります。

要素から不要な空白を削除するにはどうすればよいですか? xsl:strip-space で xsl:copy を実行する必要がありますか、それともより良い解決策がありますか? :)

4

2 に答える 2

4

解決策は簡単です:

それ以外の:

     <a class="d">
      <xsl:attribute name="id">cat_<xsl:value-of select="categoryid"/></xsl:attribute>
     </a>

使用する:

     <a class="d" id="cat_{categoryid}"/>
于 2009-04-22T19:04:11.307 に答える
2

Dimitreのエレガントなソリューションに加えて、次の詳細バージョンが利用可能です。

<a class="d">
   <xsl:attribute name="id">
      <xsl:text>cat_</xsl:text>
      <xsl:value-of select="categoryid"/>
   </xsl:attribute>
</a>

<xsl:text>は見過ごされがちで、非常に役立つ可能性があるため、これについてのみ言及します。XSLはとにかく冗長な言語です。

于 2009-04-22T19:12:50.337 に答える