V červenci loňského roku organizace Apache Software Foundation (ASF) oznámila, že se částečně přestane dopouštět kulturní apropriace a změní své logo. Dnes bylo nové logo představeno. "Indiánské pírko" bylo nahrazeno dubovým listem a text Apache Software Foundation zkratkou ASF. Slovo Apache se bude "zatím" dál používat. Oficiální název organizace zůstává Apache Software Foundation, stejně jako názvy projektů, například Apache HTTP Server.
Byla vydána (𝕏) srpnová aktualizace aneb nová verze 1.104 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.104 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Spotify spustilo přehrávání v bezztrátové kvalitě. V předplatném Spotify Premium.
Spoluzakladatel a předseda správní rady americké softwarové společnosti Oracle Larry Ellison vystřídal spoluzakladatele automobilky Tesla a dalších firem Elona Muska na postu nejbohatšího člověka světa. Hodnota Ellisonova majetku díky dnešnímu prudkému posílení ceny akcií Oraclu odpoledne vykazovala nárůst o více než 100 miliard dolarů a dosáhla 393 miliard USD (zhruba 8,2 bilionu Kč). Hodnota Muskova majetku činila zhruba 385 miliard dolarů.
Bylo vydáno Eclipse IDE 2025-09 aneb Eclipse 4.37. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.
T-Mobile od 15. září zpřístupňuje RCS (Rich Communication Services) zprávy i pro iPhone.
Společnost ARM představila platformu Arm Lumex s Arm C1 CPU Cluster a Arm Mali G1-Ultra GPU pro vlajkové chytré telefony a počítače nové generace.
Unicode Consortium, nezisková organizace koordinující rozvoj standardu Unicode, oznámila vydání Unicode 17.0. Přidáno bylo 4 803 nových znaků. Celkově jich je 159 801. Přibylo 7 nových Emoji.
Apple představil (YouTube) telefony iPhone 17 Pro a iPhone 17 Pro Max, iPhone 17 a iPhone Air, sluchátka AirPods Pro 3 a hodinky Watch Series 11, Watch SE 3 a Watch Ultra 3.
Realtimová strategie Warzone 2100 (Wikipedie) byla vydána ve verzi 4.6.0. Podrobný přehled novinek, změn a oprav v ChangeLogu na GitHubu. Nejnovější verzi Warzone 2100 lze již instalovat také ze Snapcraftu a Flathubu.
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 neviemty 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: