xsltLe format de base pour l'analyse est le suivant. Les amis qui en ont besoin peuvent Pour référence, le format de base de
utilisant xslt pour l'analyse est le suivant : Par exemple, le code
est le suivant :
<?xml version="1.0" encoding="GB2312"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method='html' version='1.0' encoding='GB2312' indent='yes'/> <xsl:template match="/"> <html> <body> //这里可以包含一些xhtml的标签 </body> </html> </xsl:template> </xsl:stylesheet>
XSL fait référence à Extended Style Sheet Language (EXtensible Stylesheet Language), xsl est une feuille de style de xml, xsl comprend 3 parties, à savoir : xslt (un langage utilisé pour convertir des documents XML), x-path (un langage utilisé pour naviguer dans les documents XML ) , xsl-fo (un langage de formatage de documents XML), vous pouvez trouver des tutoriels sur le contenu associé sur http://www.php.cn/
Comme le code précédent, xslt. commence avec la version XML et la convertit au format
C'est la première fois que je contacte xslt, je ne le fais pas. Je n'en ai pas une compréhension approfondie. Voici juste une liste de quelques points clés que j'ai rencontrés lors de son apprentissage et de son utilisation
1 Méthodes de récursivité et de passage de paramètres :
Avec un Prendre le. arbre généalogique à titre d'exemple, le fichier xml ressemble à ceci :
Le code est le suivant :
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="digui.xsl"?> <person name="Otto" sex="mael" age="60"> <person name="Sandra" sex="mael" age="35"> <person name="Lichao" sex="femael" age="34"> <person name="Zhangsan" sex="mael" age="12"/> </person> <person name="Eric" sex="femael" age="36"> <person name="HaLi" sex="mael" age="18"/> </person> <person name="Lisi" sex="mael" age="30"> <person name="HeLi" sex="mael" age="6"/> <person name="Andy" sex="femael" age="13"/> </person> </person> </person>
Maintenant, nous devons écrire un xslt pour exprimer le relation de la famille. En fait, la famille La relation est un arbre généalogique, nous exprimons donc une telle relation en produisant différents niveaux d'indentation. L'ancêtre le plus grand est ensuite indenté par génération. La génération la plus jeune est à la fin et est la plus indentée. . De cette façon, la hiérarchie de l'arbre ressort ; voici le code du fichier xsl :
Le code est le suivant :
<?xml version="1.0" encoding="GB2312"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method='html' version='1.0' encoding='GB2312' indent='yes'/> <xsl:template match="/"> <html> <body> <xsl:apply-templates select="person"> <xsl:with-param name="level" select="'0'"/> </xsl:apply-templates> </body> </html> </xsl:template> <xsl:template match="person"> <xsl:param name="level"/> <p style="text-indent:{$level}em">name:<xsl:value-of select="@name"/>,sex:<xsl:value-of select="@sex"/>,age:<xsl:value-of select="@age"/></p> <xsl:apply-templates select="person"> <xsl:with-param name="level" select="$level + 2"/> </xsl:apply-templates> </xsl:template> </xsl:stylesheet>
Ici. nous définissons d'abord un fichier appelé Pour les paramètres de niveau, utilisez une syntaxe telle que
2. Utilisez des paramètres pour changer les couleurs sur des lignes alternées : En citant toujours l'exemple ci-dessus et le niveau du paramètre, nous donnons au paramètre +1 (nombre impair) au lieu de +2 (nombre pair). ) lors de la récursion, via (.. test="$level mod 2 = 0") ou (.. test="$level mod 2 = 1"), vous pouvez sélectionner des lignes paires ou impaires. Nous utilisons
couleur de fond est différente pour les lignes impaires et les lignes paires, obtenant ainsi l'effet de changer de couleur sur les lignes alternées. Le code spécifique est le suivant :
<. 🎜> Le code est le suivant :
<?xml version="1.0" encoding="GB2312"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method='html' version='1.0' encoding='GB2312' indent='yes'/> <xsl:template match="/"> <html> <body> <xsl:apply-templates select="person"> <xsl:with-param name="level" select="'0'"/> </xsl:apply-templates> </body> </html> </xsl:template> <xsl:template match="person"> <xsl:param name="level"/> <xsl:choose> <xsl:when test="$level mod 2 = 0"> <p style="text-indent:{$level}em;background-color:#DDD">name:<xsl:value-of select="@name"/>,sex:<xsl:value-of select="@sex"/>,age:<xsl:value-of select="@age"/></p> </xsl:when> <xsl:otherwise> <p style="text-indent:{$level}em;background-color:#EEE">name:<xsl:value-of select="@name"/>,sex:<xsl:value-of select="@sex"/>,age:<xsl:value-of select="@age"/></p> </xsl:otherwise> <xsl:apply-templates select="person"> <xsl:with-param name="level" select="$level + 1"/> </xsl:apply-templates> </xsl:template> </xsl:stylesheet>
三、符号转义以及CDATA语法:
目前碰到的只有“<”和“>” 要转义成<和>如果在表达式里出现这两个符号,页面在预览的时候就会报错;
另外我们需要将原文件的内容原封不动的输出来,包括换行或上面的大于和小于号等页面元素,这时候就需要CDATA这个标签, CDATA全称character data,翻译为字符数据,数据不进行转义直接输出。语法格式如下:
例如:
]]>
在页面上显示的内容将是"
四、几个教程中并没有提到的名词:
1、local-name();例子:
2、
用apply时,引擎自动搜索与当前select指定xpath的匹配节点相匹配的template(该template必须有属性match)并使用该template进行处理,此时需要指定的是select的path。
用call时就跟其它语言调用函数一样,必须指定name属性,相应的,该template必须有name属性,当然,也可以在这时with-param(当然相应的模板中有对应的param才行,不过这个不强制要求)。通过设置mode属性可以调用同一内容的不同表现形式,这个由自己去定义。
3、count(ancestor::*)这种写法是计算当前节点有多少个祖先节点,当然 ancestor也可以用child,following-sibling等xpath关系。
五、对于要符合多条件的判断,xslt不能很好的支持:
以家族树为例,我要取一个位于第二层的,名字叫Lichao的人,如果按字面理解我们可以写成
以上是在学习和使用xslt对xml进行解析的过程中的一些感想和记录,xslt很强大,有很多功能都没有涉及,当然,我还要继续学习和研究。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!