1

添付されたxslファイルのXSLT1.0変換を変更して、XMLファイル(これも添付されている)でコード化されたテーブルのHTMLバージョンを生成したいと思います。結果のHTML出力ファイルには、すべてのコンテンツが保持されたXMLファイルで定義されたテーブルが含まれている必要があり、Webブラウザーでレンダリングすると、データの行が交互に異なる背景色に割り当てられます。また、結果のHTML出力は有効なXHTML 1.1である必要があり、シングルパスで生成される必要があります。つまり、run.batが1回実行されます。私を助けてください。よろしくお願いします!

XSLファイル:

<?xml version="1.0"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:saxon="http://icl.com/saxon" xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="saxon date" version="1.0">
  <xsl:output method="text" encoding="UTF-8" indent="no"/>
  <xsl:template match="Item">Hello world</xsl:template>
</xsl:transform>

XMLファイル:

<?xml version="1.0" encoding="utf-8"?>
<Item TextType="BodyMatter" SchemaVersion="2.0" id="AaAF_Freelance_Test_1" DiscussionAlias="Discussion" SessionAlias="Chapter" SecondColour="Pantone326C" ThirdColour="Pantone2945C" FourthColour="Pantone272C" Logo="colour" Rendering="VLE Preview" Template="Wide_Margin_Reduced_A4_Unnumbered_new_design_v10_release1">
  <CourseCode>AaAF</CourseCode>
  <CourseTitle>Accessible and alternative formats</CourseTitle>
  <ItemID/>
  <ItemTitle>AaAF: Freelance XSLT test document 1</ItemTitle>
  <Unit>
    <UnitID/>
    <UnitTitle/>
    <ByLine/>
    <Session>
      <Title>Freelance XSLT test – constructing tables</Title>
      <Paragraph>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec quis elit sapien. Duis sit amet interdum lectus. Sed faucibus, mi quis dapibus consequat, nisi nunc semper erat, eu pretium enim urna porta diam. Suspendisse mi nisi, adipiscing in semper ac, viverra vitae nisl. Nulla facilisi. Nullam luctus porttitor velit, quis euismod dui commodo eu. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris arcu est, rhoncus interdum bibendum vel, commodo et justo.</Paragraph>
      <Table>
        <TableHead>Table of analytical techniques</TableHead>
        <tbody>
          <tr>
            <th class="ColumnHeadLeft">Analytical technique</th>
            <th class="ColumnHeadLeft">Application</th>
          </tr>
          <tr>
            <td class="TableLeft">IR reflectography</td>
            <td class="TableLeft">Characterisation of painting techniques, in panel and wall paintings, through the identification of underdrawings; identification of undocumented interventions; characterisation of pigments.</td>
          </tr>
          <tr>
            <td class="TableLeft">FT-IR spectroscopy</td>
            <td class="TableLeft"><i>In situ</i> non-destructive identification of alterations on stones, mortars and metals, identification of pigments and binders in paintings; identification of undocumented restorations.</td>
          </tr>
          <tr>
            <td class="TableLeft">Raman spectroscopy</td>
            <td class="TableLeft"><i>In situ</i> non-destructive identification of alterations on stones, mortars and metals; identification of pigments in wall paintings. </td>
          </tr>
          <tr>
            <td class="TableLeft">XRF</td>
            <td class="TableLeft">Elemental analyses of stones, metals, wall and easel paintings, and other objects. </td>
          </tr>
          <tr>
            <td class="TableLeft">Vis-NIR spectroscopy</td>
            <td class="TableLeft">Colorimetric measurements and, possibly, identification of pigments. Measurement of possible colour changing after restoration.</td>
          </tr>
          <tr>
            <td class="TableLeft">UV-vis spectroscopy</td>
            <td class="TableLeft"><i>In situ</i> non-destructive identification of the presence of organic substances. </td>
          </tr>
          <tr>
            <td class="TableLeft">Fluorimetry</td>
            <td class="TableLeft"><i>In situ</i> detection of the distribution of organic molecules</td>
          </tr>
          <tr>
            <td class="TableLeft">Drilling resistance measurement </td>
            <td class="TableLeft">Hardness of rocks used for monuments and sculptures</td>
          </tr>
        </tbody>
      </Table>
    </Session>
  </Unit>
</Item>

run.batファイル:

java -jar ou_saxon.jar -o output1.html input.xml convert.xsl
pause
4

1 に答える 1

2

この変換

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="/">
  <xsl:apply-templates select="/*/*/*/Table"/>
 </xsl:template>

 <xsl:template match="Table">
  <table>
       <xsl:apply-templates select="node()|@*"/>
  </table>
 </xsl:template>

 <xsl:template match="TableHead">
  <th><xsl:apply-templates select="node()|@*"/></th>
 </xsl:template>

 <xsl:template match="tr[not(th)][position() mod 2 = 1]">
  <tr class="odd">
    <xsl:apply-templates select="node()|@*"/>
  </tr>
 </xsl:template>

 <xsl:template match="tr[not(th)][position() mod 2 = 0]">
  <tr class="even">
    <xsl:apply-templates select="node()|@*"/>
  </tr>
 </xsl:template>
</xsl:stylesheet>

提供されたXMLドキュメントに適用した場合

<Item TextType="BodyMatter" SchemaVersion="2.0" id="AaAF_Freelance_Test_1" DiscussionAlias="Discussion" SessionAlias="Chapter" SecondColour="Pantone326C" ThirdColour="Pantone2945C" FourthColour="Pantone272C" Logo="colour" Rendering="VLE Preview" Template="Wide_Margin_Reduced_A4_Unnumbered_new_design_v10_release1">
    <CourseCode>AaAF</CourseCode>
    <CourseTitle>Accessible and alternative formats</CourseTitle>
    <ItemID/>
    <ItemTitle>AaAF: Freelance XSLT test document 1</ItemTitle>
    <Unit>
        <UnitID/>
        <UnitTitle/>
        <ByLine/>
        <Session>
            <Title>Freelance XSLT test – constructing tables</Title>
            <Paragraph>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec quis elit sapien. Duis sit amet interdum lectus. Sed faucibus, mi quis dapibus consequat, nisi nunc semper erat, eu pretium enim urna porta diam. Suspendisse mi nisi, adipiscing in semper ac, viverra vitae nisl. Nulla facilisi. Nullam luctus porttitor velit, quis euismod dui commodo eu. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris arcu est, rhoncus interdum bibendum vel, commodo et justo.</Paragraph>
            <Table>
                <TableHead>Table of analytical techniques</TableHead>
                <tbody>
                    <tr>
                        <th class="ColumnHeadLeft">Analytical technique</th>
                        <th class="ColumnHeadLeft">Application</th>
                    </tr>
                    <tr>
                        <td class="TableLeft">IR reflectography</td>
                        <td class="TableLeft">Characterisation of painting techniques, in panel and wall paintings, through the identification of underdrawings; identification of undocumented interventions; characterisation of pigments.</td>
                    </tr>
                    <tr>
                        <td class="TableLeft">FT-IR spectroscopy</td>
                        <td class="TableLeft">
                            <i>In situ</i> non-destructive identification of alterations on stones, mortars and metals, identification of pigments and binders in paintings; identification of undocumented restorations.
                        </td>
                    </tr>
                    <tr>
                        <td class="TableLeft">Raman spectroscopy</td>
                        <td class="TableLeft">
                            <i>In situ</i> non-destructive identification of alterations on stones, mortars and metals; identification of pigments in wall paintings. 
                        </td>
                    </tr>
                    <tr>
                        <td class="TableLeft">XRF</td>
                        <td class="TableLeft">Elemental analyses of stones, metals, wall and easel paintings, and other objects. </td>
                    </tr>
                    <tr>
                        <td class="TableLeft">Vis-NIR spectroscopy</td>
                        <td class="TableLeft">Colorimetric measurements and, possibly, identification of pigments. Measurement of possible colour changing after restoration.</td>
                    </tr>
                    <tr>
                        <td class="TableLeft">UV-vis spectroscopy</td>
                        <td class="TableLeft">
                            <i>In situ</i> non-destructive identification of the presence of organic substances. 
                        </td>
                    </tr>
                    <tr>
                        <td class="TableLeft">Fluorimetry</td>
                        <td class="TableLeft">
                            <i>In situ</i> detection of the distribution of organic molecules
                        </td>
                    </tr>
                    <tr>
                        <td class="TableLeft">Drilling resistance measurement </td>
                        <td class="TableLeft">Hardness of rocks used for monuments and sculptures</td>
                    </tr>
                </tbody>
            </Table>
        </Session>
    </Unit>
</Item>

必要な正しい結果を生成します

<table>
   <th>Table of analytical techniques</th>
   <tbody>
      <tr>
         <th class="ColumnHeadLeft">Analytical technique</th>
         <th class="ColumnHeadLeft">Application</th>
      </tr>
      <tr class="odd">
         <td class="TableLeft">IR reflectography</td>
         <td class="TableLeft">Characterisation of painting techniques, in panel and wall paintings, through the identification of underdrawings; identification of undocumented interventions; characterisation of pigments.</td>
      </tr>
      <tr class="even">
         <td class="TableLeft">FT-IR spectroscopy</td>
         <td class="TableLeft">
            <i>In situ</i> non-destructive identification of alterations on stones, mortars and metals, identification of pigments and binders in paintings; identification of undocumented restorations.
                        </td>
      </tr>
      <tr class="odd">
         <td class="TableLeft">Raman spectroscopy</td>
         <td class="TableLeft">
            <i>In situ</i> non-destructive identification of alterations on stones, mortars and metals; identification of pigments in wall paintings. 
                        </td>
      </tr>
      <tr class="even">
         <td class="TableLeft">XRF</td>
         <td class="TableLeft">Elemental analyses of stones, metals, wall and easel paintings, and other objects. </td>
      </tr>
      <tr class="odd">
         <td class="TableLeft">Vis-NIR spectroscopy</td>
         <td class="TableLeft">Colorimetric measurements and, possibly, identification of pigments. Measurement of possible colour changing after restoration.</td>
      </tr>
      <tr class="even">
         <td class="TableLeft">UV-vis spectroscopy</td>
         <td class="TableLeft">
            <i>In situ</i> non-destructive identification of the presence of organic substances. 
                        </td>
      </tr>
      <tr class="odd">
         <td class="TableLeft">Fluorimetry</td>
         <td class="TableLeft">
            <i>In situ</i> detection of the distribution of organic molecules
                        </td>
      </tr>
      <tr class="even">
         <td class="TableLeft">Drilling resistance measurement </td>
         <td class="TableLeft">Hardness of rocks used for monuments and sculptures</td>
      </tr>
   </tbody>
</table>

注意してください

変換は、それぞれに「奇数」または「偶数」のクラス属性を追加するだけtrです。これは、cssファイルも参照され、とに適切なCSSプロパティが定義されていることを前提としてい.oddます.even

そうでない場合は、変換を変更して直接フォーマットを生成します。

たとえば、2つのテンプレートでそれぞれ次のようにすることができます。

  <tr bgcolor="white">

  <tr bgcolor="#87b1f1">

最後に、出力をXHTML名前空間に入れたい場合は、次のように変換をさらに変更します

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns="http://www.w3.org/1999/xhtml">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="/">
  <xsl:apply-templates select="/*/*/*/Table"/>
 </xsl:template>

 <xsl:template match="*">
   <xsl:element name="{name()}" namespace="http://www.w3.org/1999/xhtml">
     <xsl:copy-of select="namespace::*"/>
       <xsl:apply-templates select="node()|@*"/>
   </xsl:element>
 </xsl:template>

 <xsl:template match="Table">
  <table>
       <xsl:apply-templates select="node()|@*"/>
  </table>
 </xsl:template>

 <xsl:template match="TableHead">
  <th><xsl:apply-templates select="node()|@*"/></th>
 </xsl:template>

 <xsl:template match="tr[not(th)][position() mod 2 = 1]">
  <tr bgcolor="white">
    <xsl:apply-templates select="node()|@*"/>
  </tr>
 </xsl:template>

 <xsl:template match="tr[not(th)][position() mod 2 = 0]">
  <tr bgcolor="#87b1f1">
    <xsl:apply-templates select="node()|@*"/>
  </tr>
 </xsl:template>
</xsl:stylesheet>

同じXMLドキュメントがこの変換で処理されると、結果はXHTML名前空間になります

<table xmlns="http://www.w3.org/1999/xhtml">
   <th>Table of analytical techniques</th>
   <tbody>
      <tr>
         <th class="ColumnHeadLeft">Analytical technique</th>
         <th class="ColumnHeadLeft">Application</th>
      </tr>
      <tr bgcolor="white">
         <td class="TableLeft">IR reflectography</td>
         <td class="TableLeft">Characterisation of painting techniques, in panel and wall paintings, through the identification of underdrawings; identification of undocumented interventions; characterisation of pigments.</td>
      </tr>
      <tr bgcolor="#87b1f1">
         <td class="TableLeft">FT-IR spectroscopy</td>
         <td class="TableLeft">
            <i>In situ</i> non-destructive identification of alterations on stones, mortars and metals, identification of pigments and binders in paintings; identification of undocumented restorations.
                        </td>
      </tr>
      <tr bgcolor="white">
         <td class="TableLeft">Raman spectroscopy</td>
         <td class="TableLeft">
            <i>In situ</i> non-destructive identification of alterations on stones, mortars and metals; identification of pigments in wall paintings. 
                        </td>
      </tr>
      <tr bgcolor="#87b1f1">
         <td class="TableLeft">XRF</td>
         <td class="TableLeft">Elemental analyses of stones, metals, wall and easel paintings, and other objects. </td>
      </tr>
      <tr bgcolor="white">
         <td class="TableLeft">Vis-NIR spectroscopy</td>
         <td class="TableLeft">Colorimetric measurements and, possibly, identification of pigments. Measurement of possible colour changing after restoration.</td>
      </tr>
      <tr bgcolor="#87b1f1">
         <td class="TableLeft">UV-vis spectroscopy</td>
         <td class="TableLeft">
            <i>In situ</i> non-destructive identification of the presence of organic substances. 
                        </td>
      </tr>
      <tr bgcolor="white">
         <td class="TableLeft">Fluorimetry</td>
         <td class="TableLeft">
            <i>In situ</i> detection of the distribution of organic molecules
                        </td>
      </tr>
      <tr bgcolor="#87b1f1">
         <td class="TableLeft">Drilling resistance measurement </td>
         <td class="TableLeft">Hardness of rocks used for monuments and sculptures</td>
      </tr>
   </tbody>
</table>
于 2012-10-18T19:07:11.113 に答える