Wiki hii, nilipokea kazi ya kuvutia: kuondoa programu ya zamani ya Java. Maombi yanachambua faili maalum za XML katika muundo wa kibinafsi. Najua XML haionekani ngumu kwa watengenezaji wa junior, lakini ina faida ya kushangaza. Unaweza kuthibitisha faili dhidi ya kielelezo. Kielelezo hiki kinaitwa XSD, kifupi cha XML Schema Ufafanuzi. Ukweli wa kuvutia: Unaandika XSDs katika XML. Katika chapisho hili, ninaelezea tatizo, kile nilichotafuta, na suluhisho la mwisho la kazi. tatizo la Jambo nzuri ni kwamba programu tayari inatumia XSD. Hata hivyo, wakati wa kuanzishwa kwa programu, XSD kuthibitisha ilikuwa katika ya imeongeza baadhi ya vipengele muhimu. hasa, v1.1 inaongeza na ya . Toleo la 1.0 Toleo la 1.1 Maoni ya Uhaba wa Utambulisho Kulikuwa na maoni mengi ya '//TODO kuthibitisha' katika msimbo wa Java ambayo haiwezi kutekelezwa katika XSD 1.0 lakini inaweza katika XSD 1.1. Nilidhani itakuwa rahisi kuboresha. Njia ya Naive Chini ya kichwa, JDK inatumia utekelezaji wa Xerces unaounganishwa kwa ajili ya uchambuzi. Kwa furaha, angalia 'com.sun.org.apache.xerces.internal.jaxp' mfuko katika JDKs zako zilizowekwa. Utekelezaji huu unashikiliwa kwenye uhalali wa XSD 1.1. Nilifikiri kwamba mradi utakuwa na kuendelea na utekelezaji wake. Niliongeza toleo la hivi karibuni kwa kujenga yangu, na ... hakuna kitu. Nilipata kina zaidi katika JAR na kupatikana kama ifuatavyo: Xerces ya kawaida public final class Constants { /** XML 1.1 feature ("xml-1.1"). */ public static final String XML_11_FEATURE = "xml-1.1"; // Constant to enable Schema 1.1 support public final static boolean SCHEMA_1_1_SUPPORT = false; public final static short SCHEMA_VERSION_1_0 = 1; public final static short SCHEMA_VERSION_1_0_EXTENDED = 2; } - ya Kuanzishwa kwa Java Kuanzishwa kwa Java Kama wewe ni kuchanganyikiwa kwa sababu msimbo 1.1 msaada ni daima, kuwakaribisha katika ulimwengu wangu. Mradi unajumuisha mashirika mawili ya uwezekano wa kuvutia, na ya ya ya Mchoro wa awali katika chuo kikuu inaonekana kama: Maelezo ya J xml-schema-1.1-dev xml-schema-1.1-tests Constants public final class Constants { /** XML 1.1 feature ("xml-1.1"). */ public static final String XML_11_FEATURE = "xml-1.1"; // Constant to enable Schema 1.1 support public final static boolean SCHEMA_1_1_SUPPORT = false; public final static short SCHEMA_VERSION_1_0 = 1; public final static short SCHEMA_VERSION_1_0_EXTENDED = 2; public final static short SCHEMA_VERSION_1_1 = 4; } 1.Hakuna msaada bado 2.Lakini inaonekana kuwa na matumaini? Kuanzishwa kwa: Java Kuanzishwa kwa Java Nilijaribu kutafuta kifaa kama hicho katika : haina kuonyesha artifact maalum. Kituo cha Maven Haikuja akili yangu wakati huo, lakini wakati wa kuandika chapisho, niliangalia: ukurasa hutoa usambazaji wa XSD 1.1. Hii inamaanisha kupata JAR, kuunda POM ya ajabu, na kuchapisha kwenye Artifactory ya ndani, ambayo sikuwa na upatikanaji wa kuandika. Maelezo ya Download kutafuta mbadala wa Nilitafuta mbadala, lakini moja pekee niliyopata ilikuwa Saxon. Pakiti ya Saxon ni mkusanyiko wa zana za usindikaji wa nyaraka za XML. Sehemu kuu ni: An XSLT processor, which can be used from the command line, or invoked from an application, using a supplied API. Saxon implements the XSLT 3.0 Recommendation. The product can also be used to run XSLT 2.0 stylesheets, or XSLT 1.0 stylesheets in backwards compatibility mode. An XPath processor accessible to applications via a supplied API. This supports XPath 2.0 and XPath 3.1. It can also be used in backwards-compatibility mode to evaluate XPath 1.0 expressions. An XQuery processor that can be used from the command line, or invoked from an application by use of a supplied API. This supports XQuery 3.1, which also allows XQuery 1.0 or 3.0 queries to be executed. With Saxon-EE, you can also use the XQuery extensions defined in the XQuery Update 1.0 Recommendation, but later working drafts of XQuery Update are not supported (W3C has abandoned work on these versions). An XML Schema Processor. . This can be used on its own to validate a schema for correctness, or to validate a source document against the definitions in a schema. It is also used to support the schema-aware functionality of the XSLT and XQuery processors. Like the other tools, it can be run from the command line, or invoked from an application. This supports both XSD 1.0 and XSD 1.1 Pakiti ya Saxon ni mkusanyiko wa zana za usindikaji wa nyaraka za XML. Sehemu kuu ni: Mchakato wa XSLT, ambao unaweza kutumika kutoka mstari wa amri, au kuitwa kutoka kwa programu, kwa kutumia API iliyotolewa. Saxon inatumia Mapendekezo ya XSLT 3.0. Bidhaa hiyo pia inaweza kutumika kuendesha karatasi za XSLT 2.0, au karatasi za XSLT 1.0 katika hali ya upatikanaji wa nyuma. Mchakato wa XPath unaweza kupatikana kwa programu kupitia API iliyotolewa. Hii inasaidia XPath 2.0 na XPath 3.1. Pia inaweza kutumika katika hali ya upatikanaji wa nyuma ili kutathmini maneno ya XPath 1.0. Processor ya XQuery ambayo inaweza kutumika kutoka mstari wa amri, au inaweza kutumika kutoka kwa programu kwa kutumia API iliyotolewa. Hii inasaidia XQuery 3.1, ambayo pia inaruhusu maswali ya XQuery 1.0 au 3.0 kutekelezwa. Na Saxon-EE, unaweza pia kutumia upanuzi wa XQuery uliowekwa katika mapendekezo ya XQuery Update 1.0, lakini miradi ya baadaye ya kazi ya XQuery Update haipatikani (W3C imeacha kazi juu ya matoleo haya). XML Schema Processor. Hii inasaidia XSD 1.0 na XSD 1.1. Hii inaweza kutumika peke yake kuthibitisha schema kwa usahihi, au kuthibitisha hati ya chanzo dhidi ya ufafanuzi katika schema. Pia inatumika kusaidia utendaji wa schema-awarefu wa processors XSLT na XQuery. Kama zana nyingine, inaweza kuendeshwa kutoka mstari wa amri, au inatumika kutoka kwa programu. Nini maana ya Saxon? Nini maana ya Saxon? Baada ya uchunguzi kidogo, nilipata kuwa Sax ilikuwa na hasara mbili kuu: Ingawa inawezekana kutumia API ya kawaida ya JAXP, unapaswa kubadilisha API ya Saxon ya kibinafsi ili kufungua nguvu yake kamili. Saxon inakuja katika ladha mbili: Enterprise Edition ni kulipwa, na Home Edition ni bure. Sikuwa na bajeti wala muda wa kutafuta. Kurudi kwa 1 Square Ilikuwa ni wakati wa kuchunguza tena hali. Kujenga kutoka chanzo? Haiwezekani. Saxon? Kulipa. matumaini yangu ya mwisho ilikuwa AI. Natakiwa kusema kwamba kwa mara moja, ilikuwa msaidizi wa maisha. Inaonekana kwamba miundo miwili ya Xerces na vipengele vya XSD 1.1 zinapatikana kwenye Wao walichapishwa na OpenGIS katika 2015-2016, wakati ambapo ilikuwa rahisi sana kuchapishwa huko. Kwa kweli inaelezea ni aina gani ya mimea ambayo inatoka: . Kituo cha Maven wa POM ya http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/ Katika hatua hii, nilikuwa mstari kadhaa wa msimbo mbali na lengo: var schemaFactory = SchemaFactory.newInstance(Constants.W3C_XML_SCHEMA11_NS_URI); var schema = schemaFactory.newSchema(schemaFile); var saxParserFactory = SAXParserFactory.newInstance(); saxParserFactory.setNamespaceAware(true); saxParserFactory.setSchema(schema); var reader = saxParserFactory.newSAXParser().getXMLReader(); reader.setContentHandler(handler); reader.setErrorHandler(handler); reader.setEntityResolver(handler); Kuweka toleo la XSD 1.1 Kuweka mpango kwa kiwanda Sax Parsing ya kawaida Nina bado haja ya kuthibitisha kwa usahihi hakuna tatizo la usalama kutoka kwa kujenga hii ya "mbuzi", lakini inafanya kazi: Ninaweza kutumia vipengele kutoka kwa XSD 1.1! Mwisho wa Katika chapisho hili, nilielezea safari yangu ya kutekeleza XSD 1.1 kuthibitisha katika Java. Ni rahisi sana kuliko nilivyotarajia awali, lakini natumaini itasaidia wengine ambao wanakabiliwa na hali hiyo. Ili kufikia zaidi: API ya Java kwa Usindikaji wa XML (JAXP) Mradi wa Apache XercesTM Awali ilichapishwa katika Java Geek Mfano wa Java Geek