XSLT рдореЗрдВ рд╕реНрддрд░рд┐рдд рдореЗрдиреВ

рдирдорд╕реНрдХрд╛рд░ рдкреНрд░рд┐рдп рдЦрд╛рдмрд░реЛрд╡рдЪрдиреЗред рдореИрдВ рдПрдХ рдмрд╣реБ-рд╕реНрддрд░реАрдп рдореЗрдиреВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдмрджрд▓рдХрд░, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдкреЗрдбрд╝реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рд╣рдорд╛рд░реА рдкрд╕рдВрджреАрджрд╛ рд╕рд╛рдЗрдЯ рдкрд░ рдРрд╕рд╛ рдХреБрдЫ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рджреВрд╕рд░реЛрдВ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдкреЗрдбрд╝реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╡рд┐рд╖рдп рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдирд┐рдкрдЯрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдПрдХ рдЕрд▓рдЧ XML рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП sharpeningред

рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕рдВрд░рдЪрдирд╛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдореЗрдВ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рдореВрд▓ рддрддреНрд╡ рдХрд╛ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рдПрдХ рд▓рд┐рдВрдХ рдФрд░ рдПрдХ рдирд╛рдо рд╣реЛрддрд╛ рд╣реИред


menu.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="menu.xsl"?> <root> <item id="1" idParent="0" link="#" title=" 1"/> <item id="2" idParent="1" link="#" title=" 2"/> <item id="3" idParent="1" link="#" title=" 3"/> <item id="4" idParent="2" link="#" title=" 4"/> <item id="5" idParent="2" link="#" title=" 5"/> <item id="6" idParent="1" link="#" title=" 6"/> <item id="7" idParent="6" link="#" title=" 7"/> <item id="8" idParent="6" link="#" title=" 8"/> <item id="9" idParent="0" link="#" title=" 9"/> </root> 

рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╣рд┐рдЪрдХрд┐рдЪрд╛рд╣рдЯ рдХреЗ, рд╣рдо рдкрд░рд┐рд╡рд░реНрддрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ

menu.xsl
 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!--   --> <xsl:output method="html" encoding="utf-8" omit-xml-declaration="yes" doctype-system="about:legacy-compat"/> <!--   --> <xsl:template match="/"> <html lang="ru"> <head> <title> </title> </head> <body> <h1> </h1> <ul> <xsl:apply-templates select="/root/item[@idParent=0]"/> </ul> </body> </html> </xsl:template> <!--    --> <xsl:template match="/root/item"> <xsl:variable name="id" select="@id"/> <!--    --> <li> <a href="{@link}"> <xsl:value-of select="@title"/> </a> <!--    --> <xsl:if test="/root/item[@idParent=$id]"> <ul> <xsl:apply-templates select="/root/item[@idParent=$id]"/> </ul> </xsl:if> </li> </xsl:template> </xsl:stylesheet> 

рдкрд░рд┐рд╡рд░реНрддрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рдореВрд▓ HTML рдЯреИрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рдХрд┐рд╕реА рдХреЛ рдХреЗрд╡рд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреА рдХреЙрд▓ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рдореВрд▓ рдЕрднрд┐рднрд╛рд╡рдХ рдХреЗ рд╕рд╛рде рддрддреНрд╡реЛрдВ рдХреА рдХреЙрд▓ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рджреВрд╕рд░рд╛ рднрд╛рдЧ рдПрдХ рдореЗрдиреВ рдЖрдЗрдЯрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рддрддреНрд╡ рд╣реИрдВред рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ, рдпрд╣ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЙрд╕реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╣рддреЗ рд╣реИрдВред

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЧреИрд░-рдореМрдЬреВрджрд╛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╣рдо рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ menu.xml рдФрд░ menu.xsl рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╣рдо рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕ рддрд╕реНрд╡реАрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред

рдореЗрдиреВ рдЖрдЙрдЯрдкреБрдЯ
рдЫрд╡рд┐

PS рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж Dart рдорд┐рд▓рд╛ред

Source: https://habr.com/ru/post/In138997/


All Articles