2

xsl:use-attribute-setsで継承を機能させることができないようです。MichaelKayは第6章で述べています。XSLT要素>xsl:attribute-set-Pg。269その

この属性の組み合わせも繰り返し使用される場合は、次のように、それ自体が属性セットとして定義できます。

<xsl:attribute-set name="ruled-table" use-attribute-set="full-width-table"> 
 <xsl:attribute name="border">2</xsl:attribute> 
 <xsl:attribute name="rules">cols</xsl:attribute> 
</xsl:attribute-set>

編集1:USE-ATTRIBUTE-SETの代わりにUSE-ATTRIBUTE-SETは、おそらく本のタイプミスです。XSL:USE-ATTRIBUTE-SETSを使用しています

これは私にはうまくいきません。言い換えれば、私の現在のセットアップ[ApacheCocoon経由のXSLT2.0、styles.xslをmypdf.xslにインポート]の結果は

<table xsl:use-attribute-sets="ruled-table"> 
<tr>...</tr> 
</table> 

2つの属性セットの前例を介したセット和集合ではなく、ルールドテーブル全幅の属性セットのセットの違いになります。名前付き属性セットの親属性セットではなく、直接名前付き属性のみを取得します。次のような操作を行うことで、効果をシミュレートできます。

<table xsl:use-attribute-sets="full-width-table ruled-table"> 
<tr>...</tr> 
</table> 

ただし、これは不要のようです。誰かがこの問題に遭遇しましたか?これがstyles.xslです:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" exclude-result-prefixes="xsl xs fo">

  <xsl:attribute-set name="fontstack">
    <xsl:attribute name="text-align">left</xsl:attribute>
    <xsl:attribute name="font-size">10pt</xsl:attribute>
    <xsl:attribute name="font-family">"TradeGothic-CondEighteen", "Trade Gothic Cond Eighteen", "Trade Gothic Condensed Eighteen", "Trade Gothic", "TradeGothic", "Trade-Gothic", "ArialNarrow", "Arial-Narrow", "Arial Narrow", Arial, sans-serif
    </xsl:attribute>
    <xsl:attribute name="color">black</xsl:attribute>
  </xsl:attribute-set>

  <xsl:attribute-set name="headers" xsl:use-attribute-sets="fontstack">
    <xsl:attribute name="font-size">18pt</xsl:attribute>
    <xsl:attribute name="font-weight">bold</xsl:attribute>
    <xsl:attribute name="space-after">7pt</xsl:attribute>
    <xsl:attribute name="padding">12pt</xsl:attribute>
  </xsl:attribute-set>

  <xsl:attribute-set name="h2" xsl:use-attribute-sets="headers">
    <xsl:attribute name="padding">5pt</xsl:attribute>
  </xsl:attribute-set>

  <xsl:attribute-set name="h3" xsl:use-attribute-sets="headers">
    <xsl:attribute name="padding">2pt</xsl:attribute>
  </xsl:attribute-set>

</xsl:stylesheet>
4

1 に答える 1

3

問題の原因となっている可能性のある問題が 2 つあります。

1.) elementuse-attribute-setの最初の例で属性を指定しましたが、それは複数形でなければなりません:xsl:attribute-setuse-attribute-sets

<xsl:attribute-set name="ruled-table" use-attribute-sets="full-width-table"> 
    <xsl:attribute name="border">2</xsl:attribute> 
    <xsl:attribute name="rules">cols</xsl:attribute> 
</xsl:attribute-set>

2.) スタイルシートxsl:use-attribute-setsではxsl:attribute-set要素の属性を使用していますが、名前空間修飾されていない属性である必要がありますuse-attribute-sets:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" exclude-result-prefixes="xsl xs fo">

    <xsl:attribute-set name="fontstack">
        <xsl:attribute name="text-align">left</xsl:attribute>
        <xsl:attribute name="font-size">10pt</xsl:attribute>
        <xsl:attribute name="font-family">"TradeGothic-CondEighteen", "Trade Gothic Cond Eighteen", "Trade Gothic Condensed Eighteen", "Trade Gothic", "TradeGothic", "Trade-Gothic", "ArialNarrow", "Arial-Narrow", "Arial Narrow", Arial, sans-serif
        </xsl:attribute>
        <xsl:attribute name="color">black</xsl:attribute>
    </xsl:attribute-set>

    <xsl:attribute-set name="headers" use-attribute-sets="fontstack">
        <xsl:attribute name="font-size">18pt</xsl:attribute>
        <xsl:attribute name="font-weight">bold</xsl:attribute>
        <xsl:attribute name="space-after">7pt</xsl:attribute>
        <xsl:attribute name="padding">12pt</xsl:attribute>
    </xsl:attribute-set>

    <xsl:attribute-set name="h2" use-attribute-sets="headers">
        <xsl:attribute name="padding">5pt</xsl:attribute>
    </xsl:attribute-set>

    <xsl:attribute-set name="h3" use-attribute-sets="headers">
        <xsl:attribute name="padding">2pt</xsl:attribute>
    </xsl:attribute-set>

</xsl:stylesheet>
于 2012-11-11T02:31:30.217 に答える