XSLT Ko'rinishlari

All lectures for UZ purposes
Daraja , Dars
Mavjud

XSLT - bu XML-ni o'zgartirish tili va u veb-ilovalarda ko'rsatish texnologiyasi sifatida mashhur. Agar sizning ilovangiz tabiiy ravishda XML bilan ishlasa yoki modelingizni XML ga osonlik bilan o'zgartirish mumkin bo'lsa, XSLT ko'rsatish texnologiyasi sifatida yaxshi tanlov bo'lishi mumkin. Keyingi bo'limda Spring Web MVC dagi ilovada model ma'lumotlari sifatida XML hujjatini yaratish va uni XSLT yordamida o'zgartirish ko'rsatilgan.

Bu misol oddiy Spring ilovasi bo'lib, Kontrollerda so'zlar ro'yhatini yaratadi va ularni model Map ga qo'shadi. Map qaytariladi va bizning XSLT ko'rinishimizning ko'rinish nomi ham qaytariladi. XSLT kontrolleri so'zlar ro'yhatini oddiy XML hujjatiga o'zgartiradi, bu esa o'zgartirishga tayyor.

Beanlar

Konfiguratsiya oddiy Spring veb-ilovasi uchun standart: MVC Konfiguratsiyasi XsltViewResolver beanini va oddiy MVC annotatsiyasi konfiguratsiyasini aniqlashi kerak. Quyidagi misol buni qanday qilishni ko'rsatadi:

Java
@EnableWebMvc
@ComponentScan
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Bean
    public XsltViewResolver xsltViewResolver() {
        XsltViewResolver viewResolver = new XsltViewResolver();
        viewResolver.setPrefix("/WEB-INF/xsl/");
        viewResolver.setSuffix(".xslt");
        return viewResolver;
    }
}
Kotlin
@EnableWebMvc
@ComponentScan
@Configuration
class WebConfig : WebMvcConfigurer {
    @Bean
    fun xsltViewResolver() = XsltViewResolver().apply {
        setPrefix("/WEB-INF/xsl/")
        setSuffix(".xslt")
    }
}

Kontroller

Bizga so'zlarni yaratish logikasini inkapsulyatsiya qiladigan kontroller ham kerak.

Kontroller logikasi @Controller annotatsiyasi bilan belgilangan sinfda joylashgan va handler metodi quyidagicha aniqlangan:

Java
@Controller
public class XsltController {
    @RequestMapping("/")
    public String home(Model model) throws Exception {
        Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
        Element root = document.createElement("wordList");
        List<String> words = Arrays.asList("Hello", "Spring", "Framework");
        for (String word : words) {
            Element wordNode = document.createElement("word");
            Text textNode = document.createTextNode(word);
            wordNode.appendChild(textNode);
            root.appendChild(wordNode);
        }
        model.addAttribute("wordList", root);
        return "home";
    }
}
Kotlin
import org.springframework.ui.set
@Controller
class XsltController {
    @RequestMapping("/")
    fun home(model: Model): String {
        val document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()
        val root = document.createElement("wordList")
        val words = listOf("Hello", "Spring", "Framework")
        for (word in words) {
            val wordNode = document.createElement("word")
            val textNode = document.createTextNode(word)
            wordNode.appendChild(textNode)
            root.appendChild(wordNode)
        }
        model["wordList"] = root
        return "home"
    }
}

Hozircha biz faqat DOM-hujjat yaratdik va uni model Map ga qo'shdik. XML-faylni Resource sifatida yuklash va moslashtirilgan DOM-hujjat o'rniga ishlatish mumkinligiga e'tibor bering.

Ob'ekt grafigini avtomatik ravishda "DOMifikatsiya" qiladigan dasturiy paketlar mavjud, ammo Spring sizning modelingizdan DOMni yaratishda tanlagan usulda to'liq moslashuvchanlikni ta'minlaydi. Bu XML o'zgartirishining model ma'lumotlar tuzilishingizda haddan tashqari rol o'ynashini oldini olish imkonini beradi, bu DOMifikatsiya jarayonini boshqarish uchun vositalardan foydalanganda xavf tug'diradi.

O'zgartirish

Oxir-oqibat, XsltViewResolver XSLT shablonining "home" faylini aniqlaydi va unda DOM-hujjatni birlashtirib, bizning ko'rinishimizni yaratadi. XsltViewResolver konfiguratsiyasida ko'rsatilgandek, XSLT shablonlari war faylida WEB-INF/xsl katalogida ishlaydi va xslt fayl kengaytmasiga ega.

Quyidagi misol XSLT o'zgartirishini ko'rsatadi:

<?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" omit-xml-declaration="yes"/>
    <xsl:template match="/">
        <html>
            <head><title>Hello!</title></head>
            <body>
                <h1>My First Words</h1>
                <ul>
                    <xsl:apply-templates/>
                </ul>
            </body>
        </html>
    </xsl:template>
    <xsl:template match="word">
        <li><xsl:value-of select="."/></li>
    </xsl:template>
</xsl:stylesheet>

Yuqoridagi o'zgartirish quyidagi HTML tarzida vizualizatsiya qilinadi:

<html>
    <head>
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Hello!</title>
    </head>
    <body>
        <h1>My First Words</h1>
        <ul>
            <li>Hello</li>
            <li>Spring</li>
            <li>Framework</li>
        </ul>
    </body>
</html>
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION