Home Map Index Search News Archives Links About LF
[Top bar]
[Bottom bar]
[an error occurred while processing this directive]
[æÏÔÏ Á×ÔÏÒÁ]
á×ÔÏÒ Egon Willighagen

ï Á×ÔÏÒÅ:

÷ÓÔÕÐÉÌ × ÇÏÌÌÁÎÄÓËÕÀ ËÏÍÁÎÄÕ LF × 1999 Ç. É ÓÔÁÌ ×ÔÏÒÙÍ ÒÅÄÁËÔÏÒÏÍ × ÎÁÞÁÌÅ ÜÔÏÇÏ ÇÏÄÁ. õÞÉÔÓÑ × õÎÉ×ÅÒÓÉÔÅÔÅ îÅÊÍÅÇÅÎÁ ÎÁ ÆÁËÕÌØÔÅÔÅ ÉÎÆÏÒÍÁÃÉÏÎÎÏÊ ÈÉÍÉÉ. éÇÒÁÅÔ × ÂÁÓËÅÔÂÏÌ É ÌÀÂÉÔ ÐÕÔÅÛÅÓÔ×Ï×ÁÔØ.

óÏÄÅÒÖÁÎÉÅ:

éÓÐÏÌØÚÏ×ÁÎÉÅ Perl - ÍÏÄÕÌÑ XML::XSLT

[éÌÌÀÓÔÒÁÃÉÑ]

òÅÚÀÍÅ:

úÁÍÅÔËÁ ÐÒÅÄÓÔÁ×ÌÑÅÔ ÓÏÂÏÊ ××ÅÄÅÎÉÅ × × ÉÓÐÏÌØÚÏ×ÁÎÉÅ Perl - ÍÏÄÕÌÑ XML::XSLT. òÁÓÓÍÁÔÒÉ×ÁÀÔÓÑ ×ÏÚÍÏÖÎÏÓÔÉ ÓÔÁÎÄÁÒÔÁ XSLT É ÓÐÏÓÏÂÙ ÉÈ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÄÌÑ ÕÐÒÁ×ÌÅÎÉÑ ÄÏËÕÍÅÎÔÁÍÉ XML.



 

÷×ÅÄÅÎÉÅ

XSLT ÒÅËÏÍÅÎÄÏ×ÁÎ W3C É ÍÏÖÅÔ ÒÁÓÓÍÁÔÒÉ×ÁÔØÓÑ ËÁË ÓÔÁÎÄÁÒÔ. XSLT Ñ×ÌÑÅÔÓÑ ÞÁÓÔØÀ XSL(ÑÚÙË ÛÁÂÌÏÎÏ× XML). åÇÏ ÎÁÚÎÁÞÅÎÉÅ, ËÁË ÓÌÅÄÕÅÔ ÉÚ ÎÁÚ×ÁÎÉÑ, - ÆÏÒÍÁÔÉÒÏ×ÁÎÉÅ XML-ÄÏËÕÍÅÎÔÁ. æÏÒÍÁÔÉÒÏ×ÁÎÉÅ Ñ×ÌÑÅÔÓÑ ÏÓÎÏ×ÎÏÊ ÚÁÄÁÞÅÊ XSL É × ÜÔÏÍ ÐÒÏÃÅÓÓÅ ÞÁÓÔÏ ÎÅÏÂÈÏÄÉÍÁ ÔÒÁÎÓÆÏÒÍÁÃÉÑ ÄÁÎÎÙÈ, ÞÔÏ É ÏÓÕÝÅÓÔ×ÌÑÅÔ XSLT.

XSLT-ÏÂÒÁÂÏÔÞÉËÉ ÎÁÐÉÓÁÎÙ ÎÁ ÎÅÓËÏÌØËÉÈ ÑÚÙËÁÈ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ : ÎÁ C(XT, ÒÁÚÒÁÂÏÔÁÎ James Clark) É ÎÁ Java(Xalan, ÒÁÚÒÁÂÏÔÁÎ Lotus Inc.). ôÁËÖÅ ÓÕÝÅÓÔ×ÕÀÔ É Perl-ÐÒÏÅËÔÙ : XML::XSLT É XML::Sabotron. ðÅÒ×ÙÊ ÐÏÌÎÏÓÔØÀ ÎÁÐÉÓÁÎ ÎÁ Perl, ×ÔÏÒÏÊ Ñ×ÌÑÅÓÔÓÑ ÉÎÔÅÒÆÅÊÓÏÍ Ë C++ XSLT-ÏÂÒÁÂÏÔÞÉËÕ.  

íÏÄÕÌØ XML::XSLT

ôÅËÕÝÕÀ ×ÅÒÓÉÀ ÍÏÄÕÌÑ(0.21) ÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ Ó CPAN. úÁÍÅÔËÁ ÏÓÎÏ×Ù×ÁÅÔÓÑ ÎÁ ÄÁÎÎÏÊ ×ÅÒÓÉÉ. Perl-ÍÏÄÕÌØ ÂÙÌ ÒÁÚÒÁÂÏÔÁÎ Geert Josten - ÓÔÕÄÅÎÔÏÍ ÆÁËÕÌØÔÅÔÁ ÈÉÍÉÉ õÎÉ×ÅÒÓÉÔÅÔÁ îÅÊÍÅÇÅÎÁ, ÎÏ × ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ × ÒÁÚÒÁÂÏÔËÅ ÕÞÁÓÔ×ÕÀÔ É ÍÎÏÇÉÅ ÄÒÕÇÉÅ. ðÒÉÍÅÎÅÎÉÅ CVS tree ÐÏÚ×ÏÌÑÅÔ ÒÁÓÓÞÉÔÙ×ÁÔØ ÎÁ ÕÓËÏÒÅÎÉÅ ÒÁÚÒÁÂÏÔËÉ ÍÏÄÕÌÑ, ÞÔÏ ÎÅÏÂÈÏÄÉÍÏ W3C ÄÌÑ ÏÓÕÝÅÓÔ×ÌÅÎÉÑ ÒÁÂÏÞÅÇÏ ÐÒÏÅËÔÁ XSLT.

îÉÖÅ ÓÌÅÄÕÅÔ Perl-ËÏÄ, ÄÅÍÏÎÓÔÒÉÒÕÀÝÉÊ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÍÏÄÕÌÑ :

#!/usr/bin/perl
use XML::XSLT;

my $xmlfile = "example.xml";
my $xslfile = "example.xsl";

my $parser = XML::XSLT->new ($xslfile, "FILE");

$parser->transform_document ($xmlfile, "FILE");
$parser->print_result();

úÄÅÓØ XML-ÆÁÊÌ(example.xml) ÔÒÁÎÓÆÏÒÍÉÒÕÅÔÓÑ ÎÁ ÏÓÎÏ×Å XSLT-ÆÁÊÌÁ (example.xsl). ôÁËÖÅ ÛÁÂÌÏÎÙ ÍÏÇÕÔ ÂÙÔØ ÏÓÎÏ×ÁÎÙ ÎÁ DOM tree :

#!/usr/bin/perl
use XML::XSLT;
use XML::DOM;

my $domparser = new XML::DOM::Parser;
my $doc = $domparser->parsefile ("file.xml");

my $parser = XML::XSLT->new ($doc, "DOM");

ÉÌÉ ÓÔÒÏËÅ :

#!/usr/bin/perl
use XML::XSLT;

my $xsl_string = qq{
<?xml version="1.0"?>
<xsl:stylesheet>
  <xsl:template match="/">
    <html>
      <xsl:apply-templates/>
    </body>
  </xsl:template>
</xsl:stylesheet>
};

my $parser = XML::XSLT->new ($xsl_string, "STRING");

÷ÓÅ ÔÒÉ ×ÁÒÉÁÎÔÁ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÐÒÏÃÅÄÕÒÙ transform_document(), ÐÏËÁÚÁÎÎÏÊ × ÐÅÒ×ÏÍ ÐÒÉÍÅÒÅ.

óËÒÉÐÔ ÔÒÁÎÓÌÉÒÕÀÝÉÊ XML-ÆÁÊÌ ÎÁ ÏÓÎÏ×Å ÛÁÂÌÏÎÁ XSLT ÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÚÄÅÓØ. ïÎ ÉÓÐÏÌØÚÕÅÔ ÉÍÅÎÁ ÆÁÊÌÏ× × ËÁÞÅÓÔ×Å ÁÒÇÕÍÅÎÔÏ× : ÛÁÂÌÏÎ XSLT É XML ÆÁÊÌ. ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ ÓËÒÉÐÔ ÉÓÐÏÌØÚÕÅÔ ÍÅÈÁÎÉÚÍ "FILE".

ôÅÐÅÒØ, ÐÏÓÌÅ ÔÏÇÏ ËÁË ÍÙ ÕÚÎÁÌÉ ÓÐÏÓÏ ÐÒÉÍÅÎÅÎÉÑ XSLT-ÏÂÒÁÂÏÔÞÉËÁ ÄÌÑ ÔÒÁÎÓÌÑÃÉÉ XML-ÄÏËÕÍÅÎÔÏ× × ÑÚÙËÅ Perl, ÒÁÓÓÍÏÔÒÉÍ ÓÔÁÎÄÁÒÔ XSLT.  

óÔÁÎÄÁÒÔ XSLT

XSLT ÂÙÌ ÒÁÚÒÁÂÏÔÁÎ Ó ÃÅÌØÀ ÕÐÒÏÝÅÎÉÑ ÐÕÂÌÉËÁÃÉÉ ÄÁÎÎÙÈ, ÈÒÁÎÉÍÙÈ × XML. XSL-ÆÏÒÍÁÔÉÒÏ×ÁÎÉÅ ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÒÁÚÒÁÂÏÔËÉ É ÐÒÅÄÓÔÁ×ÌÅÎÉÑ, Á XSLT-ÄÌÑ ÔÒÁÎÓÆÏÒÍÁÃÉÉ XML-ÄÁÎÎÙÈ (ÓÏÒÔÉÒÏ×ËÁ, ×ÙÂÏÒ, ËÏÍÂÉÎÉÒÏ×ÁÎÉÅ ÉÚ ÒÁÚÌÉÞÎÙÈ ÉÓÔÏÞÎÉËÏ×). îÁ ÓÁÍÏÍ ÄÅÌÅ, ËÁË ÐÏËÁÚÙ×ÁÅÔ ÐÒÁËÔÉËÁ, XSLT ÄÏÓÔÁÔÏÞÅÎ ÔÁËÖÅ ÄÌÑ ÒÁÚÒÁÂÏÔËÉ É ÐÒÅÄÓÔÁ×ÌÅÎÉÑ.

íÏÄÕÌØ XML::XSLT ÉÓÐÏÌØÚÕÅÔ ÎÅ ×ÓÅ ËÏÍÁÎÄÙ XSLT, ÎÏ ×ÓÅ ÒÁÓÓÍÁÔÒÉ×ÁÅÍÙÅ × ÚÁÍÅÔËÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ.

XSLT-ÄÏËÕÍÅÎÔ ÏÐÒÅÄÅÌÑÅÔ ÍÅÔÏÄ ÔÒÁÎÓÆÏÒÍÁÃÉÉ XML-ÄÏËÕÍÅÎÔÁ. üÔÏ ÄÏÓÔÉÇÁÅÔÓÑ ÏÐÒÅÄÅÌÅÎÉÅÍ ÛÁÂÌÏÎÁ ÄÌÑ ËÁÖÄÏÇÏ ÜÌÅÍÅÎÔÁ. îÉÖÅ ÒÁÓÓÍÁÔÒÉ×ÁÅÔÓÑ ÎÅÓËÏÌØËÏ ÐÒÉÍÅÒÏ× XSLT-ÄÏËÕÍÅÎÔÏ×, ÐÒÉÍÅÎÑÅÍÙÈ Ë ÏÄÎÏÍÕ XML-ÄÏËÕÍÅÎÔÕ, ÓÏÄÅÒÖÁÝÅÍÕ ÒÁÂÏÞÉÊ ÌÉÓÔ Gnumeric (GNOME).

ðÒÏÓÍÏÔÒÅ× ÛÁÂÌÏÎÙ ÍÏÖÎÏ ÏÂÎÁÒÕÖÉÔØ, ÞÔÏ ÏÎÉ ÓÏÄÅÒÖÁÔ ÉÎÆÏÒÍÁÃÉÀ Ï ÆÏÒÍÁÔÅ ×Ù×ÏÄÉÍÙÈ ÄÁÎÎÙÈ (ÎÁÐÒÉÍÅÒ : ÆÏÒÍÁÔ ÓÔÒÁÎÉÃÙ, ÛÉÒÉÎÁ É ×ÙÓÏÔÁ ÑÞÅÊËÉ). íÙ ÓÏÚÄÁÄÉÍ XSLT-ÛÁÂÌÏÎÙ ÄÌÑ ×ÙÐÏÌÎÅÎÉÑ ÓÌÅÄÕÀÝÉÈ ÚÁÄÁÞ :

÷×ÅÄÅÎÉÅ × ÏÓÎÏ×Ù XML::XSLT ÏÓÕÝÅÓÔ×ÉÍ ÎÁÐÉÓÁÎÉÅÍ XSLT-ÛÁÂÌÏÎÁ ×ÙÄÁÀÝÅÇÏ ËÒÁÔËÉÊ ÏÔÞÅÔ (verysimple.xsl):

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

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

  <xsl:template match="text()"/>

  <xsl:template match="Item">
    <xsl:value-of select="./name"/> : <xsl:value-of select="./val-string"/>
  </xsl:template>

</xsl:stylesheet>

ðÅÒ×ÙÊ ÛÁÂÌÏÎ ÎÁÈÏÄÉÔ ×ÓÅ ÜÌÅÍÅÎÔÙ × XML-ÄÏËÕÍÅÎÔÅ, ×ÔÏÒÏÊ-CDATA × XML- ÄÏËÕÍÅÎÔÅ É ÎÁËÏÎÅà ÔÒÅÔÉÊ ×ÙÐÏÌÎÑÅÔ ÔÏ, ÞÔÏ ÍÙ ÈÏÔÅÌÉ ÓÄÅÌÁÔØ : ËÁÖÄÙÊ ÜÌÅÍÅÎÔ × ÏÔÞÅÔÅ ÓÏÐÒÏ×ÏÖÄÁÅÔÓÑ ÚÎÁÞÅÎÉÅÍ CDATA ÜÌÅÍÅÎÔÏ× name É val-string. ðÏÐÒÏÂÕÊÔÅ ÓÁÍÉ! óÒÁ×ÎÉÔÅ ×Ù×ÏÄÉÍÕÀ ÉÎÆÏÒÍÁÃÉÀ Ó ÔÅÍ, ÞÔÏ ×Ù ÈÏÔÅÌÉ ÐÏÌÕÞÉÔØ.

îÏ ×ÅÄØ ÕÖÅ ÐÅÒ×ÙÊ ÛÁÂÌÏÎ ÎÁÈÏÄÉÔ ÜÌÅÍÅÎÔ, ÎÅ ÔÁË ÌÉ? ôÏÇÄÁ ÐÏÞÅÍÕ ÐÒÉÍÅÎÑÅÔÓÑ ÔÒÅÔÉÊ ÛÁÂÌÏÎ, Á ÎÅ ÐÅÒ×ÙÊ? ÷ÓÅ ÄÅÌÏ × ÔÏÍ, ÞÔÏ ÐÏÓÌÅÄÕÀÝÉÊ ÐÅÒÅÐÉÓÙ×ÁÅÔ ÐÒÅÄÙÄÕÝÉÊ. ðÏÜÔÏÍÕ ÛÁÂÌÏÎÙ ÒÁÓÐÏÌÏÖÅÎÙ ÏÔ ÏÂÝÉÈ Ë ÓÐÅÃÉÆÉÞÎÙÍ.

ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ ÎÁ ÄÏÂÁ×ÌÅÎÉÅ ÍÎÏÖÅÓÔ×Á ÐÒÏÂÅÌÏ×. ñ ÎÅ ÄÕÍÁÀ, ÞÔÏ ÅÓÔØ ×ÏÚÍÏÖÎÏÓÔØ ÏÂÏÊÔÉ ÜÔÏ ÄÌÑ ÄÁÎÎÏÊ ×ÅÒÓÉÉ. îÏ ÅÓÌÉ ÆÁÊÌ ÂÕÄÅÔ × ÆÏÒÍÁÔÅ XHTML- ÎÁÍ ÎÅ Ï ÞÅÍ ÂÅÓÐÏËÏÉÔØÓÑ. óÌÅÄÕÀÝÉÊ ÐÒÉÍÅÒ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÐÒÅÄÙÄÕÝÅÍÕ Ó ÄÏÂÁ×ÌÅÎÉÅÍ ÓÌÕÖÅÂÎÏÊ ÉÎÆÏÒÍÁÃÉÉ XHTML ÄÌÑ ÐÒÏÓÍÏÔÒÁ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ × ×Å - ÂÒÁÕÚÅÒÅ (simple.xsl):

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

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

  <xsl:template match="text()"/>

  <xsl:template match="Item">
    <b><xsl:value-of select="./name"/></b>: <i><xsl:value-of select="./val-string"/></i><br />
  </xsl:template>

  <xsl:template match="/">
    <html>
      <head>
        <title>Summary Gnumeric File</title>
      </head>
      <body bgcolor="white">
        <xsl:apply-templates/>
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

äÏÐÏÌÎÉÔÅÌØÎÙÊ ÛÁÂÌÏÎ ÄÌÑ ÜÌÅÍÅÎÔÁ root(/) ÐÏÚ×ÏÌÑÅÔ ×ÓÔÁ×ÉÔØ XHTML-ËÏÄ ÐÅÒÅÄ É ÐÏÓÌÅ ÏÓÎÏ×ÎÏÇÏ ×Ù×ÏÄÁ. òÁÓÓÍÏÔÒÉÍ ÐÏÄÒÏÂÎÅÅ : ÐÒÉ ÚÁÐÕÓËÅ XML::XSLT ÏÓÕÝÅÓÔ×ÌÑÅÔÓÑ ÐÏÉÓË ÛÁÂÌÏÎÁ Ó ÜÌÅÍÅÎÔÏÍ root, ÄÁÌÅÅ ×ÓÔÁ×ÌÑÅÔÓÑ XHTML-ËÏÄ ÄÏ ÏÔËÒÙ×ÁÀÝÅÇÏ ÜÌÅÍÅÎÔÁ <body> ×ËÌÀÞÉÔÅÌØÎÏ, ÐÏÓÌÅ ÜÔÏÇÏ ÐÒÉÍÅÎÑÀÔÓÑ ÛÁÂÌÏÎÙ Ë ÜÌÅÍÅÎÔÁÍ, ÚÁÔÅÍ ÐÒÏÄÏÌÖÁÅÔÓÑ ÏÂÒÁÂÏÔËÁ Ó ÛÁÂÌÏÎÏÍ root É ×ÓÔÁ×ÌÑÅÔÓÑ ÚÁËÒÙ×ÁÀÝÉÊ ÜÌÅÍÅÎÔ </body> É ÄÒ.

÷ ÛÁÂÌÏÎ Item ÄÏÂÁ×ÌÑÅÔÓÑ ÄÏÐÏÌÎÉÔÅÌØÎÙÊ XHTML-ËÏÄ. ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÏÄÎÏ×ÒÅÍÅÎÎÏ É XSLT ËÏÍÁÎÄÙ É ×Ù×ÏÄÉÍÙÅ ÄÁÎÎÙÅ. XSLT-ÏÂÒÁÂÏÔÞÉË ÐÒÉÎÉÍÁÅÔ ×ÓÅ ÜÌÅÍÅÎÔÙ ÎÅ ÓÏÄÅÒÖÁÝÉÅ xsl ËÁË ×Ù×ÏÄÉÍÙÅ ÄÁÎÎÙÅ.

ó ÜÔÏÇÏ ÍÅÓÔÁ ÂÕÄÅÍ ÐÏËÁÚÙ×ÁÔØ ÔÏÌØËÏ ÎÏ×ÙÅ ÉÌÉ ÉÚÍÅÎÅÎÎÙÅ ÛÁÂÌÏÎÙ. äÌÑ ÚÁ×ÅÒÛÅÎÉÑ ÎÁÛÅÇÏ ÐÅÒ×ÏÇÏ ÐÒÉÍÅÒÁ ÄÏÂÁ×ÉÍ ÚÁÇÏÌÏ×ÏË É ÐÏÓÍÏÔÒÉÍ ÎÁ ÒÅÚÕÌØÔÁÔÙ ÒÁÂÏÔÙ ËÏÍÁÎÄÙ (finalsimple.xsl):

  <xsl:template match="Summary">
    <h2>Summary</h2>
    <ul>
      <xsl:apply-templates/>
    </ul>
  </xsl:template>
 

ëÏÍÁÎÄÁ for-each

ëÏÍÁÎÄÁ xsl:for-each ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ×ÏÚÍÏÖÎÏÓÔÉ ÏÂÒÁÂÏÔËÉ XML-ÄÏËÕÍÅÎÔÏ×, ÏÓÏÂÅÎÎÏ × ÓÏÞÅÔÁÎÉÉ Ó ËÏÍÁÎÄÏÊ xsl:sort, ÎÏ ÏÎÁ ÅÝÅ ÎÅ ×ËÌÀÞÅÎÁ × ÍÏÄÕÌØ XML::XSLT.

äÏÂÁ×ÉÍ ÉÎÆÏÒÍÁÃÉÀ Ï ÆÏÒÍÁÔÅ ÓÔÒÁÎÉà Gnumeric Workbook Ó ÐÏÍÏÝØÀ xsl:for-each (foreach.xsl):

  <xsl:template match="Sheets">
    <xsl:for-each select="Sheet">
      <h2><xsl:value-of select="Name"/></h2>
      <ul>
        Rows: <xsl:value-of select="MaxRow"/><br />
        Cols: <xsl:value-of select="MaxCol"/><br />
      </ul>
    </xsl:for-each>
  </xsl:template>

ë ÓÏÖÁÌÅÎÉÀ ÉÓÐÏÌØÚÏ×ÁÎÎÙÊ XML-ÄÏËÕÍÅÎÔ ÓÏÓÔÏÉÔ ÉÚ ÏÄÎÏÊ ÓÔÒÁÎÉÃÙ. íÏÖÎÏ ÐÏÐÒÏÂÏ×ÁÔØ ÐÒÉÍÅÎÉÔØ ÜÔÏÔ ÛÁÂÌÏÎ Ë ÄÒÕÇÏÍÕ Gnumeric-ÆÁÊÌÕ, ÓÏÓÔÏÑÝÅÍÕ ÉÚ ÎÅÓËÏÌØËÉÈ ÓÔÒÁÎÉÃ.

ëÁË ÕÐÏÍÉÎÁÌÏÓØ ÒÁÎØÛÅ-ÍÙ ÎÅ ÍÏÖÅÍ ÓÏÒÔÉÒÏ×ÁÔØ ÜÌÅÍÅÎÔÙ Ó ÐÏÍÏÝØÀ XML::XSLT × ÄÁÎÎÙÊ ÍÏÍÅÎÔ. ïÞÅÎØ ÖÁÌØ, ÐÏÔÏÍÕ ÞÔÏ XML-ÄÁÎÎÙÅ × Gnumeric-ÆÁÊÌÅ ÎÅ ÏÔÓÏÒÔÉÒÏ×ÁÎÙ. åÓÌÉ ÂÙ Õ ÎÁÓ ÂÙÌÁ ×ÏÚÍÏÖÎÏÓÔØ ÏÔÓÏÒÔÉÒÏ×ÁÔØ ÉÈ, ÍÙ ÍÏÇÌÉ ÂÙ ÓÏÓÔÁ×ÉÔØ XHTML-ÔÁÂÌÉÃÕ Ó ÔÏÞÎÙÍ ÏÇÌÁ×ÌÅÎÉÅÍ. ÷ÓÅ, ÞÔÏ ÍÙ ÍÏÖÅÍ ÓÅÊÞÁÓ ÓÄÅÌÁÔØ - ÐÏÍÅÓÔÉÔØ ×ÓÀ ÉÎÆÏÒÍÁÃÉÀ × ÏÄÎÕ ËÏÌÏÎËÕ. òÁÓÓÍÏÔÒÉÍ ÜÔÏ × ÓÌÅÄÕÀÝÅÍ ÐÒÉÍÅÒÅ.  

ëÏÍÁÎÄÁ if

÷Ù×ÅÄÅÍ ÉÎÆÏÒÍÁÃÉÀ ÉÚ ÔÒÅÔØÅÊ ËÏÌÏÎËÉ (ÄÁÎÎÙÅ Ï ÚÁÒÐÌÁÔÅ ÓÏÓÔÏÑÔÅÌØÎÙÈ ÓÔÕÄÅÎÔÏ× ÉÚ çÏÌÌÁÎÄÉÉ) Ó ÐÏÍÏÝØÀ ËÏÍÁÎÄÙ xsl:if (if.xsl):

  <xsl:template match="Sheets">
    <xsl:for-each select="Sheet">
      <h2><xsl:value-of select="Name"/></h2>
      <ul>
        Rows: <xsl:value-of select="MaxRow"/><br />
        Cols: <xsl:value-of select="MaxCol"/><br />
        <xsl:apply-templates select="Cells"/><br />
      </ul>
    </xsl:for-each>
  </xsl:template>

  <xsl:template match="Cells">
    Content of Col 3:
    <xsl:for-each select="Cell">
      <xsl:if test="@Col='3'">
        <xsl:value-of select="Content"/><xsl:text>, </xsl:text>
      </xsl:if>
    </xsl:for-each>
  </xsl:template>

ôÁË ËÁË ÓÁÍ ÛÁÂÌÏÎ "Sheets" ÎÅ ÐÒÉÍÅÎÑÅÔ ÎÉËÁËÉÈ ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÛÁÂÌÏÎÏ× Ë ÜÌÅÍÅÎÔÕ "Cell" ÎÁÍ ÎÅÏÂÈÏÄÉÍÏ ÕËÁÚÁÔØ ÜÔÏ. éÓÐÏÌØÚÕÑ ËÏÍÁÎÄÕ xsl:apply-templates Ó ÁÔÔÒÉÂÕÔÏÍ "Cells" ÍÙ ÐÒÉÍÅÎÑÅÍ ÛÁÂÌÏÎ Ë ÜÔÏÍÕ ÜÌÅÍÅÎÔÕ.

ûÁÂÌÏÎ "Cells" ÐÒÏÓÍÁÔÒÉ×ÁÅÔ ×ÓÅ ÜÌÅÍÅÎÔÙ "Cell" (ÂÕÄØÔÅ ×ÎÉÍÁÔÅÌØÎÙ É ÐÒÏ×ÅÒØÔÅ ÜÔÏ Ó ÉÓÈÏÄÎÙÍ XML-ÆÁÊÌÏÍ), ÎÏ ×Ù×ÏÄÉÔ ÚÎÁÞÅÎÉÅ ÔÏÌØËÏ ÅÓÌÉ ÁÔÔÒÉÂÕÔ "Col" ÉÍÅÅÔ ÚÎÁÞÅÎÉÅ "3". ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ ÎÁÌÉÞÉÅ "@" ÕËÁÚÙ×ÁÅÔ ÎÁ ÁÔÔÒÉÂÕÔ, Á ÏÔÓÕÔÓÔ×ÉÅ - ÎÁ ÜÌÅÍÅÎÔ.

òÁÚÒÁÂÏÔÁÎÎÙÅ ÎÁÍÉ ÛÁÂÌÏÎÙ ÓÔÁÌÉ ÂÏÌÅÅ ÓÌÏÖÎÙÍÉ É ÔÅÐÅÒØ ÎÁÄÏ ËÏÎÔÒÏÌÉÒÏ×ÁÔØ ÔÅËÕÝÉÊ ÜÌÅÍÅÎÔ. ÷ ÒÁÍËÁÈ ×ÓÅÇÏ ÄÏËÕÍÅÎÔÁ ÜÔÏ ÎÅ×ÏÚÍÏÖÎÏ, ÎÏ ÍÏÖÎÏ ÐÏÐÙÔÁÔØÓÑ × ÏÔÄÅÌØÎÏÍ ÛÁÂÌÏÎÅ. îÁÐÒÉÍÅÒ, ÏÂÒÁÝÁÑÓØ Ë ÛÁÂÌÏÎÕ "Cells" ÏÂÒÁÂÏÔÞÉË ÐÒÏ×ÏÄÉÔ ÐÏÉÓË ÜÔÏÇÏ ÜÌÅÍÅÎÔÁ (× ÄÁÎÎÏÍ ÓÌÕÞÁÅ ÜÌÅÍÅÎÔ "Cells"). äÁÌÅÅ select="Cell" × ËÏÍÁÎÄÅ xsl:for-each ÐÒÏÉÚ×ÏÄÉÔ ×ÙÂÏÒËÕ ×ÓÅÈ ÜÌÅÍÅÎÔÏ× "Cell", É ÏÄÉÎ ÒÁÚ × ÜÔÏÍ ÃÉËÌÅ ÂÕÄÅÔ ÏÂÒÁÝÅÎÉÅ Ë ÏÄÎÏÍÕ ÉÚ ÜÌÅÍÅÎÔÏ×. ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ test="@Col" ÏÂÒÁÝÁÅÔÓÑ Ë ÁÔÔÒÉÂÕÔÕ "Cell", Á ÎÅ "Cells". ë ÁÔÔÒÉÂÕÔÕ "Cells" ÍÏÖÎÏ ÏÂÒÁÔÉÔØÓÑ - select="../@name", ÄÁÖÅ ÅÓÌÉ "Cells" ÎÅ ÉÍÅÅÔ ÁÔÔÒÉÂÕÔÏ×.

ëÏÍÁÎÄÁ xsl:text ËÏÎÔÒÏÌÉÒÕÅÔ ×Ù×ÏÄ ×ÓÅÇÏ ÔÅËÓÔÁ. ðÒÏÂÅÌ × ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ", " ÐÒÉÎÉÍÁÅÔÓÑ ËÁË ÎÅ ÏÔÎÏÓÑÝÉÊÓÑ Ë ×Ù×ÏÄÉÍÏÊ ÉÎÆÏÒÍÁÃÉÉ.  

úÁËÌÀÞÅÎÉÅ

üÔÁ ÚÁÍÅÔËÁ Ñ×ÌÑÅÔÓÑ ÌÉÛØ ××ÅÄÅÎÉÅÍ × ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÍÏÄÕÌÑ XML::XSLT. ÷ÏÚÍÏÖÎÏ Õ ×ÁÓ ×ÏÚÎÉËÎÕÔ ×ÏÐÒÏÓÙ É ÜÔÏ ÈÏÒÏÛÏ. ïÓÔÁ×ÌÑÊÔÅ ÉÈ ÎÁ ËÏÎÔÁËÔÎÏÊ ÓÔÒÁÎÉÃÅ ÉÌÉ ÐÉÛÉÔÅ × ÌÉÓÔ ÒÁÓÓÙÌËÉ ×Å ÓÁÊÔÁ XML::XSLT.  

óÓÙÌËÉ


Webpages maintained by the LinuxFocus Editor team
© Egon Willighagen
LinuxFocus.org 2000

Click here to report a fault or send a comment to Linuxfocus
Translation information:
en -> -- Egon Willighagen
en -> ru Kirill Poukhliakov

2000-07-04, generated by lfparser version 1.5