abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 18:33 | Nová verze

    Byla vydána (𝕏) nová verze 24.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 24.7 je Thriving Tiger. Přehled novinek v příspěvku na fóru.

    Ladislav Hagara | Komentářů: 0
    včera 05:11 | Bezpečnostní upozornění

    Binarly REsearch upozorňuje na bezpečnostní problém PKFail (YouTube) v ekosystému UEFI. Stovky modelů zařízení používají pro Secure Boot testovací Platform Key vygenerovaný American Megatrends International (AMI) a jeho privátní část byla při úniku dat prozrazena. Do milionů zařízení (seznam v pdf) po celém světě tak útočníci mohou do Secure Bootu vložit podepsaný malware. Otestovat firmware si lze na stránce pk.fail. Ukázka PoC na Linuxu na Windows na YouTube.

    Ladislav Hagara | Komentářů: 11
    včera 02:22 | Nová verze

    Mobilní operační systém /e/OS (Wikipedie) založený na Androidu / LineageOS, ale bez aplikací a služeb od Googlu, byl vydán ve verzi 2.2 (Mastodon, 𝕏). Přehled novinek na GitLabu. Vypíchnuta je rodičovská kontrola.

    Ladislav Hagara | Komentářů: 2
    včera 01:22 | IT novinky

    Společnost OpenAI představila vyhledávač SearchGPT propojující OpenAI modely umělé inteligence a informace z webů v reálném čase. Zatím jako prototyp pro vybrané uživatele. Zapsat se lze do pořadníku čekatelů.

    Ladislav Hagara | Komentářů: 0
    včera 00:11 | Nová verze

    Distribuce Linux Mint 22 „Wilma“ byla vydána. Je založená na Ubuntu 24.04 LTS, ale s desktopovým prostředím Cinnamon (aktuálně verze 6.2), příp. MATE nebo Xfce, balíkem aplikací XApp, integrací balíčků Flatpak a dalšími změnami. Více v přehledu novinekpoznámkách k vydání.

    Fluttershy, yay! | Komentářů: 2
    25.7. 17:44 | Zajímavý článek Ladislav Hagara | Komentářů: 2
    25.7. 17:22 | Nová verze

    Byla vydána nová verze 14 integrovaného vývojového prostředí (IDE) Qt Creator. Podrobný přehled novinek v cgitu. Vypíchnout lze podporu rozšíření v Lua.

    Ladislav Hagara | Komentářů: 0
    25.7. 17:11 | Nová verze

    Byla vydána verze 1.80.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 0
    25.7. 14:11 | IT novinky

    Apple oznámil, že v beta verzi spustil své Apple Maps na webu. Podporován je také webový prohlížeč Chrome. Ne však na Linuxu.

    Ladislav Hagara | Komentářů: 23
    25.7. 13:11 | IT novinky

    Portál Stack Overflow po roce opět vyzpovídal své uživatele, jedná se především o vývojáře softwaru, a zveřejnil detailní výsledky průzkumu. Průzkumu se letos zúčastnilo více než 65 tisíc vývojářů. Z Česka jich bylo 710. Ze Slovenska 246.

    Ladislav Hagara | Komentářů: 0
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Dotaz: Filtrování podle vzoru v XSLT 1.0

    5.12.2008 11:01 esparky
    Filtrování podle vzoru v XSLT 1.0
    Přečteno: 365×

    Dobrý den,
    potřeboval bych poradit s následujícím problémem.
    Mám vstup:
    <msg type="abc/>
    <msg type="bcd">
    <msg type="abcd">

    Rád bych provedl nějakou akci, pro všechny entity jejichž atribut type odpovídá
    nějaké masce (např "ab*")

    V XSLT 2.0 se to nejspíš dělá pomocí matches:
    <xsl:if test="matches(jmeno,'ab*')">Vystup</xsl:if>

    Můj program však používá xslt procesor, který umí pouze XSLT 1.0 (libxslt).
    Je nějaká možnost jak to provést v XSLT 1.0

    Děkuji

    Odpovědi

    default avatar 5.12.2008 23:34 default | skóre: 22 | Madrid
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0
    Přílohy:

    Ahoj,

    já bych být tebou nějak nakombinoval funkce z XSLT 1.0. Takže například starts-with(), contains() a tak podobně.

    Já osobně libxslt nepoužívám, ale používám Javí implementaci XSLT 1.0. V příloze máš test case pro xmlUtilities. Když ty soubory nahraješ do balíku testů, global.sandbox.xmlutilities, tak si s tím můžeš pohrát.

    Můj zdrojový XML je

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
    
        <msg type="abc">abc</msg>
        <msg type="bcd">bcd</msg>
        <msg type="abcd">abcd</msg>
    
    </root>
    

    Můj XSLT je

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    
        <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
    
        <xsl:template match="/">
            <xsl:element name="result-root">
                <xsl:apply-templates />
            </xsl:element>
        </xsl:template>
        
        <xsl:template match="//msg">
            <xsl:if test="starts-with(@type, 'ab') and contains(@type, 'bc')">
                <xsl:element name="result-element">
                    <xsl:value-of select="." />
                </xsl:element>
            </xsl:if>
        </xsl:template>
    
    </xsl:stylesheet>
    

    Výstup je

    <?xml version="1.0" encoding="UTF-8"?>
    <result-root>
    
        <result-element>abc</result-element>
        
        <result-element>abcd</result-element>
    
    </result-root>
    

    Tak dej vědět, jak jsi pokročil. Jo — a kdyžtak postni nějaký příklad, se kterým si můžu pohrát; takhle na sucho se dost těžko něco vymejšlí.

    6.12.2008 06:41 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0
    s libxslt je (asi zalezi podla distribucie, moze byt oddelene) programcek xsltproc.
    btw, java implementacii je viacero, osobne mi napr sakra problem robilo pouzivat xalan a saxon zaroven, podla poradia jarov v classpath fungoval bude jeden alebo druhy ...
    default avatar 6.12.2008 23:41 default | skóre: 22 | Madrid
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0
    s libxslt je (asi zalezi podla distribucie, moze byt oddelene) programcek xsltproc.

    Jo, to je pravda. Ale nejsem s tím moc kamarád. Přecijen v Javě jsem na to lépe…

    osobne mi napr sakra problem robilo pouzivat xalan a saxon zaroven, podla poradia jarov v classpath fungoval bude jeden alebo druhy ...

    No, jsou dva způsoby, jak v tom udělat pořádek:

    1. používat právě jednu implementaci a její JAR dát do endorsed adresáře
    2. v případě, že je třeba vícero implementací vrámci jedné JVM, pak upravit JARy implementací, napsat vlastní ServiceLoader (v našem případě implementaci javax.xml.transformer.TransformerFactory) a vše dát opět do endorsed adresáře. Když nemůžeme použít endorsed adresář, pak musíme správně napsat svůj vlastní class loader a dát si sakra pozor na různé Javí implementace (to, co funguje pod Sun JVM, nemusí fungovat pod IBM JVM a tak podobně). A nebo
    3. nepoužívat javax.xml.transformer.TransformerFactory a používat rovnou konkrétní implementace, ale to znamená důkladnou znalost jejich vnitřností.
    7.12.2008 14:40 esparky
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0

    Předem děkuji všem za odpověď.

    Program je napsán v C++ (je použita knihovna libxslt z gnome, nedošlo mi, že její jméno se asi kryje i s nějakou knihovnou používanou v javě). Volání xsltproc se mi moc nehodí (transformace je volána i několikrát za sekundu), ale když bude nejhůř, tak bych jej asi použil.

    Vaše odpovědi chápu tak, že asi jednoduchý problém jak vyřešit moji transformaci v XSLT 1.0 neí, existuje tedy nějaká C/C++ knihovna podporující XSLT 2.0? Nejlépe taková aby pro ni existoval i port pro OpenWRT.

    Předem dík za jakékoli nakopnutí správným směrem

    default avatar 7.12.2008 17:33 default | skóre: 22 | Madrid
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0

     

    Program je napsán v C++ (je použita knihovna libxslt z gnome, nedošlo mi, že její jméno se asi kryje i s nějakou knihovnou používanou v javě).

     

     

    Nekryje. Akorát tyhle věci jsem zvyklej dělat v Javě a mám na to pár projektů, takže napsat příklad a odladit ho je otázka chvilky. Navíc vím, jako část standardu který Xalan implementuje a jakou ne. A když už jsme u toho Xalanu, tak se dělá i pro C++, ale nevím, v jakém je stavu — nikdy jsem si s tím nehrál.

     

    Předem dík za jakékoli nakopnutí správným směrem

     

    Jak jsem psal dole: zkusil bych to EXSLT.

    7.12.2008 14:44 esparky
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0

    Moc dík, za vyčerpávající odpověď...zkusím si vystačit s start_with(i když regex je regex:-) ), popř zkusím najít jinou knihovnu, která xslt 2.0 implementuje (viz můj druhý příspěvek v tomto threadu)

    default avatar 7.12.2008 17:26 default | skóre: 22 | Madrid
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0

    Můžeš si zkusit tu funkci matches() naimplementovat sám. :-) Ale možná bude stačit přepnout do EXSLT. V tomto rozšíření jsou regulární výrazy k dispozici.

    Daniel Kvasnička ml. avatar 8.12.2008 08:24 Daniel Kvasnička ml. | skóre: 52 | blog: The Joys and Sorrows of Being an IT Freak | Ostrava
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0
    No akorat ze podle jejich informaci funkci matches() nepodporuje ani Xalan ani libxslt...
    FSF: “screw you for not wanting the stuff we produce”, People: “screw you for not producing the stuff we want."
    default avatar 8.12.2008 10:00 default | skóre: 22 | Madrid
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0

    …protože funkce matches() je až v XPath 2.0 a Xalan i libxslt implementují jen XPath 1.0.

    Proto mě napadlo to EXSLT, které to řeší funkcí, která se akorát jinak jmenuje — a podle webu to vypadá, že libxslt nám EXSLT podporuje (libexslt).

    8.12.2008 14:09 esparky
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0

    Díky,EXSLT vypadá slibně, vyzkouším a dám vědět, jak to dopadlo

    Daniel Kvasnička ml. avatar 8.12.2008 14:45 Daniel Kvasnička ml. | skóre: 52 | blog: The Joys and Sorrows of Being an IT Freak | Ostrava
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0
    To jsme si nerozumeli. Ja vim, ze to patri do 2.0 a ze libxslt neco z EXSLT implementuje... ale neimplementuje tuto konkretni funkci. Na strance kazde fce z EXSLT mate dole sekci IMPLEMENTATIONS a u matches() tam libxslt chybi.

    Pokud ovsem ty informace nemaji zastarale. Coz je pak problem tvurcu enginu, ze o tom nedaji vedet.
    FSF: “screw you for not wanting the stuff we produce”, People: “screw you for not producing the stuff we want."
    default avatar 8.12.2008 15:02 default | skóre: 22 | Madrid
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0

    Jo, už to chápu, o co jde.

    No, pakliže lib(e)xslt nic takového nepodporuje, není nic jednoduššího, než si napsat své vlastní rozšíření. :-) Ale jak se takové věci píší pro lib(e)xslt — to neumím a netuším. Já dělal rozšíření jen pro Xalan-J. :-(

    8.12.2008 20:46 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0
    na to existuje nieco take, ako function-available a/alebo element-available, imho jedina spolahliva cesta, ako o xslt procesore nieco zistit.
    default avatar 8.12.2008 21:07 default | skóre: 22 | Madrid
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0

    Zeptám se filozoficky: Víš, jaký XSLT transformátor v produkci máš; a přesto bys prováděl tyto kontroly?

    Když ti admin pod rukama vymění knihovnu, tak se o tom oba dovíte z logu, ne? :-D

    8.12.2008 23:25 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0
    Zeptám se filozoficky: Víš, jaký XSLT transformátor v produkci máš; a přesto bys prováděl tyto kontroly?
    Jestli jde z XSL transformace vyhodit výjimka, tak jo :-D
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    default avatar 9.12.2008 09:19 default | skóre: 22 | Madrid
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0

    Určitě z toho něco vymáčknout půjde: :-D

    init:
    deps-jar:
    compile:
    Copying 1 file to /Users/petr/NetBeansProjects/xmlutilities/build/test/classes
    compile-test-single:
    Testsuite: global.sandbox.xmlutilities.XSLTTest1
    Neznámý identifikátor SystemId; Řádek #0; Sloupec #0; Nelze nalézt funkci: matches
    Neznámý identifikátor SystemId; Řádek #0; Sloupec #0; nebyl nalezen token funkce.
    (Chyba se vyskytla na neznámém místě)java.lang.NullPointerException
    Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0,88 sec
    
    ------------- Standard Error -----------------
    Neznámý identifikátor SystemId; Řádek #0; Sloupec #0; Nelze nalézt funkci: matches
    Neznámý identifikátor SystemId; Řádek #0; Sloupec #0; nebyl nalezen token funkce.
    (Chyba se vyskytla na neznámém místě)java.lang.NullPointerException
    ------------- ---------------- ---------------
    Testcase: testTransformation(global.sandbox.xmlutilities.XSLTTest1):        Caused an ERROR
    null
    java.lang.NullPointerException
            at global.sandbox.xmlutilities.XMLUtilities.transformToString(XMLUtilities.java:602)
            at global.sandbox.xmlutilities.XMLUtilities.transformToString(XMLUtilities.java:694)
            at global.sandbox.xmlutilities.XSLTTest1.testTransformation(XSLTTest1.java:44)
    
    
    Test global.sandbox.xmlutilities.XSLTTest1 FAILED
    /Users/petr/NetBeansProjects/xmlutilities/nbproject/build-impl.xml:566: Some tests failed; see details above.
    BUILD FAILED (total time: 2 seconds)
    
    9.12.2008 13:41 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0
    ide, <message>
    9.12.2008 13:40 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0
    no, vlastne neviem :-) ty si nikdy nerobil prenosne aplikacie? a pritom su toho manualy javy plne ... :-)

    a naco je to dobre? no napr na to, aby si v pripade pritomnosti rozsirenia pouzil rozsirenie (10ms/call), inak pouzijes pomalsiu vlastnu sablonu (100ms/call). A transformacia pobezi vzdy, hoci s rozdielnym vykonom.

    default avatar 9.12.2008 14:49 default | skóre: 22 | Madrid
    Rozbalit Rozbalit vše Re: Filtrování podle vzoru v XSLT 1.0
    no, vlastne neviem :-) ty si nikdy nerobil prenosne aplikacie? a pritom su toho manualy javy plne ... :-)

    Vždy dělám aplikace přenosné. Ale klíčem k mému úspěchu je přenositelnost na platformy (typ OS), né na knihovny. Proč? Proč se vázat na konkrétní implementaci?

    1. znám její výhody a nevýhody
    2. můžu svůj kód optimalizovat na výkon s konkrétní knihovnou
    3. můj kód je kratší, tudíž obsahuje méně chyb
    4. lépe se opravují chyby (méně testovacích a vývojových prostředí, vpodstatě kartézský součin všech možností všech implementací všeho)

    Pro cílové uživatele z toho plynou tyto výhody:

    • triviální instalace
    • netřeba dohledávat a stahovat něco dalšího odněkud z internetu a zkoušet, zda to pojede
    • jednodušší konfigurace
    • plně funkční vyladěná aplikace

    Problém je ten, že já tvořím cílové aplikace; né Spring Framework a jeho konektory na další Strutsy přes JMS do JDBC, nebo Hibernate přes JMX :-) a já nevím co ještě — jo JNDI a OSGI. :-D

    Takže z mého pohledu jsou tyto kontroly jen výkonnostní brzdou. :-/

    Ale to jsme už zaběhli do tématu filozofického přístupu k vývoji software a o tom tato diskuze není. A konec konců — borec bude také jen stuck with C++ :-D A když už jsme u toho cé plus plus, tak jedna fakt podařená, která se sem teď hodí :-D

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.