XSLT夿
XSLTã«ã¤ãã¦ã
XSLTã¨ã¯ï¼
XSLTã¯ãXMLããã¥ã¡ã³ããå¥ã®XMLããã¥ã¡ã³ããªã©ã«å¤æããããã®è¨èªã§ãXMLç¨ã®ã¹ã¿ã¤ã«ã·ã¼ãè¨èªã§ããXSLã®ä¸é¨ï¼å ã TCã ã£ãé¨åãFOã¨åé¢ãã¦è¨è¨ãããXSLã®ä¸é¨ï¼ã¨ãã¦ä½¿ç¨ããããã«è¨è¨ãããã¹ã¿ã¤ã«ã·ã¼ãè¨èªã§ãã
XSLTã¯ã¯ãããMicrosoft 社ã«ãã£ã¦ææ¡ãããW3Cã«ããæ¨æºåããã¦ãã¾ãã
PHP4ã§ã¯ãæ¡å¼µã¢ã¸ã¥ã¼ã«ã¨ãã¦ãSablotronã©ã¤ãã©ãªã¨libxsltã©ã¤ãã©ãªããµãã¼ããã¦ãã¾ããã¾ããXalançä»ã®ã©ã¤ãã©ãªï¼XSLTããã»ããµï¼ã®ãµãã¼ããè¨ç»ããã¦ããããã§ãã
次ã®ä¾ã¯ãlibxsltã¢ã¸ã¥ã¼ã«ï¼PHP 4: DOM XML/XSLT 颿°ï¼ã使ç¨ããXSLT夿ã®ä¾ã§ãã
<?php
$xmldoc = domxml_open_file("foo.xml");
$xsldoc = domxml_xslt_stylesheet_file("foo.xsl");
$result = $xsldoc->process($xmldoc);
echo $xsldoc->result_dump_mem($result);
?>次ã®ä¾ã¯ãSablotronã¢ã¸ã¥ã¼ã«ï¼PHP 4: XSLT 颿°ï¼ã使ç¨ããXSLT夿ã®ä¾ã§ãã
<?php
$xh = xslt_create();
$result = xslt_process($xh, 'foo.xml', 'foo.xsl');
if ($result) {
echo $result;
} else {
die("Cannot process XSLT document.");
}
xslt_free($xh);
?>PHP5ã§ã¯ãlibxsltã使ç¨ããXSLã¨ã¯ã¹ãã³ã·ã§ã³ã使ç¨ãããã¨ãã§ãã¾ãã
<?php
// XMLã½ã¼ã¹ããã¼ããã
$xml = new DOMDocument;
$xml->load("foo.xml");
// XSLTã½ã¼ã¹ããã¼ããã
$xsl = new DOMDocument;
$xsl->load("foo.xsl");
// 夿ã®è¨å®ãè¡ã
$proc = new XSLTProcessor();
$proc->importStyleSheet($xsl); // XSLã«ã¼ã«ãé©ç¨ãã
// XML ã«å¤æãã
echo $proc->transformToXML($xml);
?>注é
- ä¾ã¯ãPHP 4 ã対象ã¨ãã¦ãã¾ããPHP 5 ã§ã¯ç°ãªãã¾ãã
XSLTã¯ã©ã¹
ã¯ã©ã¹ã®ä½æçµç·¯
æ¬ãµã¤ããé·ããæé¡§ä¸ãã£ã¦ããæ¹ãªããåç¥ã§ãããããæ¬ãµã¤ãã§ã¯æ°å¹´åãããµã¼ããµã¤ãXSLT夿ã«ããè³æºæä¾ãå§ãã¾ããããã以åã«ã¯ããã¼ã«ã«ã«ã¦Xalan-jã§XHTMLã¨HTMLã«å¤æããåºåããµã¼ãä¸ã§ãã´ã·ã¨ã¤ããããããPerlè¨èªã§æ¸ããèªå®¶è£½X/HTML夿ã¹ã¯ãªããã«ã¦è³æºæä¾ãè¡ã£ãããã¦ãã¾ããã
XSLT夿ã«ããè³æºæä¾ãå§ããå½åãæ¬ãµã¤ããç¾å¨å©ç¨ãã¦ãããµã¼ãã®ç®¡çè ã«Sablotronã®ãµãã¼ãããé¡ããç´ã«ãµãã¼ãããã¦ä»¥æ¥ãSablotronã使ç¨ãã¦ãã¾ãããããã®å¾ããµã¼ãã®ä»æ§ãé²åãç¶ãããã¤ã®éã«ãlibxsltããµãã¼ãããã¦ãã¾ããï¼ä½ã§ãåºæ¥ããµã¼ããªã®ã§ãJavaãµã¼ãã¬ããã£ã¦ææ®µããã£ãã®ã§ããã»ã»ã»ã軽ãã¦æ¥½ãªPHPã§è½ã¡çãã¾ããï¼ã
PHP4ã«ã¯ãXSLT夿ã®çºã«Sablotronã¨libxsltã©ã¤ãã©ãªã®äºç¨®é¡ã®æ¡å¼µã¢ã¸ã¥ã¼ã«ããµãã¼ãããã¦ããããããå©ç¨ããçºã®é¢æ°ãå®ç¾©ããã¦ãã¾ãããããã使ç¨ããã¢ã¸ã¥ã¼ã«ã夿´ããå ´åã«ã¯ãã½ã¼ã¹ã³ã¼ãã®å¤§å¹ ãªæ¸ãç´ããå¿ è¦ã«ãªã£ã¦ãã¾ãã¾ããããã§ãSablotronã¨libxsltã®ä¸¡ã©ã¤ãã©ãªã®çºã®é¢æ°ãã¯ã©ã¹åãããã¨ã§ã両ã©ã¤ãã©ãªã使ç¨ããã½ã¼ã¹ã³ã¼ãã®äºææ§ãå®ç¾ãã¾ããã
æ¬ãµã¤ãã¯ã2008å¹´8æã«ãµã¼ããªãã¥ã¼ã¢ã«ããã¸ã§ã¯ãã«ä¼´ããPHP4ããPHP5ã¸å®å
¨ç§»è¡ãã¾ããã以åã®ã¹ã¯ãªããã¯ä¸åäºææ§ããªãçºãæ°ãã«XSLã¨ã¯ã¹ãã³ã·ã§ã³ã使ç¨ããè¨è¿°ã«å¤æ´ãã¾ãããPHP5ã®XSLã¨ã¯ã¹ãã³ã·ã§ã³ã¯ãªãã¸ã§ã¯ãæåãªã®ã§ãã¯ã©ã¹åãã¾ããã§ããã以ä¸ã§å
¬éãã¦ããXSLTransformã¯ã©ã¹ã¯PHP4ãªã®ã§ãPHP5ã§ã¯äºææ§ããªãã®ã§ã注æãã ããã
XSLTransformã¯ã©ã¹
public class XSLTransform extends Objectæ§é
ã³ã³ã¹ãã©ã¯ã¿
public void XSLTransform([String $module])- XSLT夿ãè¡ãã¾ãã
- 弿°
String $module- PHP XSL/T ã©ã¤ãã©ãªå [
sablotron|libxslt]
ã¡ã½ãã
public void loadStylesheet(String $xslSource)- XSLT夿ã«ç¨ããXSLæç« ï¼æååï¼ãèªã¿è¾¼ãã
- 弿°
String $xslSource- XSLæç«
public void loadStylesheetFile(String $xslfile)- XSLT夿ã«ç¨ããXSLãã¡ã¤ã«ãèªã¿è¾¼ãã
- 弿°
String $xslfile- XSLãã¡ã¤ã«
public void setParameter(String $qname, String $expression)- XSLTããã»ããµã«æ¸¡ããã©ã¡ã¼ã¿ãè¨å®ããã
- 弿°
String $qname- QName
String $expression- expression
public void setLogHandler(String $logFile)- ãã°ã¡ãã»ã¼ã¸ãæ¸ãè¾¼ãããã®ãã°ãã¡ã¤ã«ãè¨å®ããã
- 弿°
String $logFile- ãã°ãã¡ã¤ã«å
public void transform(String $xmlSource, String $out)- XMLæç« ã«XSLT夿ãé©ç¨ããã
- 弿°
String $xmlSource- XMLæç«
String $out- å¤æçµæã®åºåãã¡ã¤ã«
public void transformFile(String $xmlfile, String $out)- XMLãã¡ã¤ã«ã«XSLT夿ãé©ç¨ããã
- 弿°
String $xmlfile- XMLãã¡ã¤ã«
String $out- å¤æçµæã®åºåãã¡ã¤ã«
public String getInfo(String $key)- XMLãã¡ã¤ã«ã«XSLT夿ãé©ç¨ããã
- 弿°
String $key- åå¾ãããæ
å ± [
name|version]
- è¿ãå¤
- æåããå ´åã«XSLTããã»ããµã«é¢ããæ å ±ãè¿ãã¾ãã
ã¯ã©ã¹ã®ä½¿ç¨ä¾
次ã®ä¾ã¯ãXSLTransformã¯ã©ã¹ã使ç¨ããç°¡åãªãµã³ãã«ã§ãã
<?php
ini_set("include_path", "./");
require_once("org/purl/net/osamurai/xsl/XSLTransform.php");
$xslt = new XSLTransform("sablotron");
$xslt->setLogHandler("logfile.txt");
$xslt->loadStylesheetFile("foo.xsl");
$xslt->setParameter("param", "value");
$result = $xslt->transformFile("foo.xml");
echo $result;
unset($xslt);
?>ä¸ã®ä¾ã§ã¯ãXSLT夿ã«Sablotronã©ã¤ãã©ãªã使ç¨ãã¾ããXSLT夿ã«libxsltã©ã¤ãã©ãªã使ç¨ãããå ´åã«ã¯ãnewæ¼ç®åã«ããXSLTransformãªãã¸ã§ã¯ãã使ããéã«ã第ä¸å¼æ°ã«libxsltãæå®ããã ãã§ãï¼ããã©ã«ãã»ç¬¬ä¸å¼æ°æªæå®æã¯ãXSLT夿ã«Sablotronã©ã¤ãã©ãªã使ç¨ãã¾ãï¼ã
注é
- ãå©ç¨ã®éã®æ³¨æäºé ãªã©ãã覧ä¸ããã
ãã³ãï¼ï¼
ä»çµã¿
æ¬ãµã¤ãã®XSLT夿ã«ããè³æºæä¾ã®ä»çµã¿ã«ã¯ãä»ã®èªä½ã¯ã©ã¹ï¼Cookieã¯ã©ã¹ãContentNegotiationã¯ã©ã¹çï¼ãå©ç¨ãããã¨ã§ãå©ç¨è
ã®UAã«æé©ãªå½¢å¼ãè¿ãããã«ãã¦ãã¾ãã
ã¾ããã¢ã¯ã»ã·ããªãã£ï¼ãã¦ã¼ã¶ããªãã£ã¼çãèæ
®ããå©ç¨è
èªèº«ãå¤æçµæãè¨å®ã§ããä»çµã¿ï¼XSLTè¨å®ãã©ã¼ã ï¼ãæä¾ãã¦ãã¾ãããã®ä»çµã¿ã¯å®ã«åç´ã§ãæ§ã
ãªå¤åã«å¯¾å¿ããè¨è¿°ãè¡ã£ãXSLãã¡ã¤ã«ãã²ã¨ã¤ã ãï¼ä»ã®å¹¾ã¤ãã®XSLãã¡ã¤ã«ã«ã¯ãxsl:outputè¦ç´ ã«ç°ãªãå
容ãxsl:importãxsl:includeè¦ç´ ã§ã¹ã¿ã¤ã«ã·ã¼ãã®çµåãããï¼ç¨æãã¦ãããå©ç¨è
ã®ãªã¯ã¨ã¹ããã¼ã¿ããããããã©ã¼ã å¦çã¨åãæ§ã«å¦çããXSLTããã»ããµã«å¤ï¼ãã©ã¡ã¼ã¿ï¼ã渡ãäºã§å¤åã«å¯ãã åºåããã¦ãã¾ããã©ãã§ãï¼æ³åãããç°¡åãªä»æãã§ãããã
ãã¤ã³ã
ã¹ã¿ã¤ã«ã·ã¼ãè¨è¿°ã®ãã¤ã³ãã¨ãã¦ã¯ãä»ã®ã©ããªXSLTããã»ããµã§ã夿å¯è½ï¼ç¬èªæ¡å¼µã¯ãªãã¹ã使ç¨ããªãï¼ã§å¤æå¾ã®åºåã«èª¤å·®ããªãã¹ãçããªãããã«ä»æ§ã«æºããè¨è¿°ãè¡ã£ã¦ããäºãããããã°ãç°å¢ãå¤ãã£ã¦ãå°ãäºï¼ãã³ãã¬ã¼ãè¨è¿°ã®ä¿®æ£çï¼ã¯æ®ã©ããã¾ããã
ä»ã«ãè¤æ°ã®æ¸å¼ã®XMLææ¸ãæ±ãå ´åã®ãã¤ã³ãã¨ãã¦ã¯ãä¾ãã°ãæä¸ä½è¦ç´ ãdocã¨ããXMLã¨bookã¨ããXMLã®ã©ã¡ããHTMLã«å¤æãããã¨ããå ´åãåæ¹ãä¸åº¦å¥ã®XMLã«å¤æï¼æãã¯ä¸æ¹ã®æ¸å¼ã«å¤æï¼ãããããæ´ã«å¤æããã¨ããææ³ãããã¾ããç§ã¯ããã夿®µå¤æã¨åä»ããæ¬ãµã¤ãã§ãä¸é¨ãã®ææ³ãç¨ãã¦ãã¾ãããã®å¤æ®µå¤æã®æå¤§ã®å©ç¹ã¯ãä¾ãã°å°æ¥ãæçµçãªåºåã¨ãªã(X)HTMLã®å
容ã夿´ããå ´åï¼ä¾ãã°ããã²ã¼ã·ã§ã³ã®å
容çï¼ã«ãè¤æ°ã®XMLãåã
å¥ã®ã¹ã¿ã¤ã«ã·ã¼ãã§å¤æããå¿
è¦ãããå ´åããããå
¨ã¦ã®ã¹ã¿ã¤ã«ã·ã¼ãã®ä¿®æ£ãå¿
è¦ã«ãªãã¾ãããããã夿®µå¤æã§ã¯ãè¤æ°ã®XMLãå
±éãã¦æçµçãªå¤æã«ç¨ããã¹ã¿ã¤ã«ã·ã¼ãã®ã¿ã®ä¿®æ£ã ãã§è¯ãã®ã§ãã
ä½ããï¼å½ç¶ãªããï¼å¤æ®µå¤æã¯åç¬å¤æããå¦çæéãè¦ãããã¨ãæ®ã©ã§ããããã¯ã製ä½è ã®ãã³ãã¬ã¼ãè¨è¿°ã®åéã®è¦ãæãªã®ã ã¨æãã¾ãã