Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.
Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.
Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.
Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).
OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.
Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.
R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.
IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.
Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.
Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.
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
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í.
xsltproc
.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:
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 nebojavax.xml.transformer.TransformerFactory
a používat rovnou konkrétní implementace, ale to znamená důkladnou znalost jejich vnitřností.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
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.
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)
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.
…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).
Díky,EXSLT vypadá slibně, vyzkouším a dám vědět, jak to dopadlo
matches()
tam libxslt chybi.
Pokud ovsem ty informace nemaji zastarale. Coz je pak problem tvurcu enginu, ze o tom nedaji vedet.
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.
function-available
a/alebo element-available
, imho jedina spolahliva cesta, ako o xslt procesore nieco zistit.
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?
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
Určitě z toho něco vymáčknout půjde:
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)
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.
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?
Pro cílové uživatele z toho plynou tyto výhody:
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.
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++ A když už jsme u toho cé plus plus, tak jedna fakt podařená, která se sem teď hodí
Tiskni Sdílej: