��� �������� �������� �� ��������� ������: English Castellano Deutsch Francais Russian Turkce |
����� Egon Willighagen �� ������: ������� � ����������� ������� LF � 1999 �. � ���� ������ ���������� � ������ ����� ����. ������ � ������������ ��������� �� ���������� �������������� �����. ������ � ��������� � ����� ��������������. ����������: |
������:
������� ������������ ����� �������� � � ������������� 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-�����������.
������� ������ ������(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 ��� ���������� � ����� ��������� ���������� ������, �������� � 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>
������� 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-������� � ������ �����������. ���, ��� �� ����� ������ ������� - ��������� ��� ���������� � ���� �������. ���������� ��� � ��������� �������.
������� ���������� �� ������� ������� (������ � �������� ������������� ��������� �� ���������) � ������� ������� 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:
|
2000-07-04, generated by lfparser version 1.5