abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 23
dnes 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 4
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 14
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 25
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 15
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 4
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 1
2.12. 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 773 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama
Š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: 332×

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.