Programim dhe zhvillim, javascript, python, php, html

Përcaktimi i pohimeve të atributeve në elementet xs:anyTipe në xsd 1.1

Më duhet të përcaktoj para së gjithash një sekuencë të çdo lloj elementi. Situata ime është si më poshtë:

<staticAction name="Jump" >
    <"anyElementName" reqPoints="" gainedPoints="" />
    <"anyElementName" reqPoints="" gainedPoints="" />
    <"anyElementName" reqPoints="" gainedPoints="" />
    ...
</staticAction>

Pra, pyetja ime është: si mund të përcaktoj një sekuencë të pakufizuar elementësh me emra "dinamikë" por me atribute fikse (reqPoints dhe të fituara)? Të dy atributet janë xs:integer. Mendova të shtoja atributet përmes pohimeve, por megjithatë, nuk e di saktësisht se si ta bëj. Faleminderit paraprakisht.

16.06.2015

  • Nëse dëshironi të përdorni pohimet e xpath për këtë, duhet të specifikoni shumë gjëra: çdo element ka atribute reqPoints dhe gainedPoints, të dy atributet janë numra, ka vetëm dy atribute dhe jo më shumë, elementi nuk ka përmbajtje, etj... Hidhini një sy këtij shënimi që mund të përdorni në pohimet: every $element in ./* satisfies ($element[@reqPoints and @gainedPoints and count(@*=2) and etc]) Kjo është më e lehtë për t'u bërë në XSD pasi është shumë më shprehëse, problemi janë emrat dinamikë, a ju duhen vërtet? 16.06.2015
  • @sergioFC Fatkeqësisht më duhen vërtet elementët që të jenë Dinamikë. Unë nuk jam ekspert në pohimet dhe xsd në përgjithësi.. ju lutem mund të postoni një kod me përkufizimin e elementeve dinamike duke përdorur xs:anyType ose xs:any dhe pohimet për atributet përkatëse? Faleminderit paraprakisht!! 17.06.2015

Përgjigjet:


1

Zakonisht emrat "dinamik" mund të zëvendësohen në mënyrë që të mund të modelohen duke përdorur XSD. Shembull:

Nga

<places>
    <country value="x"/>
    <city value="y"/>
    <town value="z"/>
</places>

To

<places>
    <place type="country" value="x"/>
    <place type="city" value="y"/>
    <place type="town" value="z"/>
</places>

Në këtë rast të ri vetëm vlerat e atributeve janë "dinamike". Kjo është e përshtatshme për t'u modeluar duke përdorur XSD, e cila është më e lehtë dhe më shprehëse se pohimet e XPath.

Sidoqoftë, nëse vërtet duhet të vërtetoni emrat "dinamikë" me atribute dhe lloj përmbajtjeje të njohur, mund ta shihni këtë skemë mostër me pohime (të shpjeguara brenda skemës):

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
    vc:minVersion="1.1" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning">
    <xs:element name="staticAction">
        <xs:complexType>
            <xs:complexContent>
                <!-- Base is anyType -->
                <xs:extension base="xs:anyType">
                    <xs:attribute name="name" type="xs:string"/>
                    <!-- Check that every "dynamic" child has the two integer attributes and no other attributes -->
                    <xs:assert test="every $element in ./* satisfies 
                        ($element[
                            matches(@reqPoints, '^[+-]?\d+$') and
                            matches(@gainedPoints, '^[+-]?\d+$') and
                            count(@*=2)])"/>
                    <!-- Test that there is no content in staticAction nor in the "dynamic" nodes -->
                    <xs:assert test="matches(string(.), '^\s*$')"/>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
</xs:schema>

Vini re se duke zgjeruar xs:anyType dhe duke përdorur këto pohime, ju merrni një sekuencë të pakufizuar elementësh me çdo emër dhe ato dy atribute.

17.06.2015
  • Kjo po funksionon! Faleminderit edhe një herë :) E kam pranuar tashmë si përgjigje por do të doja t'ju pyesja diçka më shumë nëse është e mundur: Unë i deklaroj këto StaticActions në fillim të skedarit tim xml duke përdorur një sekuencë të thjeshtë xs: sepse më duhen saktësisht 3 prej tyre dhe në një rend të caktuar. Atje, dua të sigurohem që këto 3 Veprime statike të kenë emrat e duhur (nëpërmjet atributit të emrit që keni specifikuar në zgjidhjen tuaj): Jump Greetings dhe Eat . Kështu që më duhet të kontrolloj që në XML-në time të treja Jump, Greetings dhe Eat janë aty, me një pohim të thjeshtë. Mund të më ndihmoni ju lutem? 17.06.2015
  • @Tarta Sigurisht, mund të pohoni /root/staticAction[1]='Jump' and /root/staticAction[2]=... etj. Gjuha e përdorur në pohime është XPath, nëse dëshironi mund ta lexoni këtë të mirë dhe të thjeshtë Udhëzues XPath që tregon bazat e XPath që mund të përdorni në pohime. 17.06.2015
  • mmm disi nuk funksionon.. u perpoqa ta aplikoj sic e ke shkruar por me duket se nuk funksionon. Dhe linku qe me dhate eshte offline per momentin haha ​​(me fat eh? :) ) une shkrova nje pyetje tjeter qe permban kete pike keshtu qe ndoshta eshte me e lehte te pergjigjesh aty sesa ta besh ketu nepermjet komenteve.. eshte pika nr 2 e pyetjes në këtë lidhje: lidhja Nëse mund të më ndihmoni edhe me pikën 1, unë ju bëj një statujë sepse do të kisha mbaruar projektin tim :) 17.06.2015
  • Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..