Permalänk
Medlem

xsd och id-tagg? [XML fråga]

Hallå!

Försöker validera ett XML dokument med en XSD fil men när jag har en id-tagg blir det fel

XSD output:

DOMDocument::schemaValidate() Generated Errors! Error 1827: Element 'day', attribute 'id': The attribute 'id' is not allowed. in /home/web73860/domains/public_html/test.xml on line 2 Error 1828: Element 'day': Element content is not allowed, because the type definition is simple. in /home/web73860/domains/public_html/test.xml on line 2 Error 1871: Element 'day': This element is not expected. in /home/web73860/domains/public_html/test.xml on line 2

Denna taggen jag försöker validera från XML:

<day id="test">

EDIT: Jag fick det att fungera nu

<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="days"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" ref="day"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="day"> <xs:complexType> <xs:sequence> <xs:element ref="date"/> <xs:element maxOccurs="unbounded" ref="prog"/> </xs:sequence> <xs:attribute name="id" use="required" type="xs:NCName"/> </xs:complexType> </xs:element> <xs:element name="date" type="xs:string"/> <xs:element name="prog"> <xs:complexType> <xs:sequence> <xs:element ref="time"/> <xs:element minOccurs="0" ref="name"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="time" type="xs:NMTOKEN"/> <xs:element name="name" type="xs:string"/> </xs:schema>

men ett annat problem har dykt upp, hur kan man "escapa" bort dessa taggarna? (specialtecken)

exempel: é

DOMDocument::schemaValidate() Generated Errors! Fatal Error 26: Entity 'uacute' not defined in /home/web7 on line 1 Fatal Error 26: Entity 'uacute' not defined in /home/web7 on line 1 Fatal Error 26: Entity 'uacute' not defined in /home/web73 on line 1 Fatal Error 26: Entity 'uacute' not defined in /home/web on line 1 Fatal Error 26: Entity 'oacute' not defined in /home/web7 on line 1 Fatal Error 26: Entity 'oacute' not defined in /home/web7 on line 1 Fatal Error 26: Entity 'iacute' not defined in /home/web on line 1 Fatal Error 26: Entity 'uacute' not defined in /home/web on line 1 Fatal Error 26: Entity 'iacute' not defined in /home/web7on line 1 Error 1872: The document has no document element. on line 0

inser att det är en svår fråga men någon kanske vet som är bra på XML/XSD

EDIT2:

Ingen svarar men jag fixade det ändå ^^

$pat = array('#&#' , '#oacute;#' , '#ntilde;#' , '#iacute;#' , '#uacute;#' , '#Aacute;#' , '#aacute;#' , '#Eacute;#' , '#eacute;#' , '#Iacute;#' , '#Ntilde;#' , '#Oacute;#' , '#Uacute;#' , '#Uuml;#' , '#uuml;#' , '#laquo;#' , '#raquo;#' , '#quest;#' , '#iexcl;#'); $rep = array('&#' , '243;' , '241;' , '237;' , '250;' , '193;' , '225;' , '201;' , '233;' , '205;' , '209;' , '211;' , '218;' , '220;' , '252;' , '171;' , '187;' , '191;' , '161;'); $file = preg_replace($pat, $rep, $file);

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Medlem

Jag vet inte riktigt vad du pysslar med, men av vad jag kan förstå använder du specialtecken i ditt XML-dokument som orsakar problem när du skall validera XML-documentet med ditt schema?

Om detta är fallet är det troligtvis för att endast 5 specialtecken är fördefinierade i XML, se (Predefined entities in XML):
http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_e...

Jag kollade en XML-fil jag hade liggande och där definierade jag specialtecken enligt nedan. Forumet konverterar teckenkoderna så kan inte skriva ut dem, ersätt punkterna med kod enligt kolumnen "HTML Code" på http://www.web-source.net/symbols.htm

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "..."> <!ENTITY copy "..."> ]> <xsl:stylesheet version="1.1"> ...

OBS: Notera att doctypen "xsl:stylesheet" är annorlunda i ditt dokument (samma som root-taggen i XML-dokumentet), ändra därefter.

Och använde dem enligt följande:

<xsl:with-param name="headingcontent">...</xsl:with-param>

Värt att nämna är att jag har nästan ingen större förståelse för detta, men rent teoretiskt borde XML-dokumentet valideras OK om du definerar specialtecknen i XML-dokumentet. Nu tänker väl validatorn "Vad är detta för tecken?!". Det finns säkert flera sätt att göra det du vill, men detta är det enda jag provat.

Fråga om det är nåt, inte det lättaste att förklara det lilla jag kan

Edit: Så löser du det under tiden man skriver ihop ett svar, bra jobbat iaf!

Visa signatur

data, representation av värden, text etc. lämpad för överföring, tolkning eller bearbetning av människor eller maskiner.
dator, digital automatisk beräkningsmaskin som styrs av ett i dess minne lagrat program.

Permalänk
Medlem

Haha tack

Fixade problemet innan det skrivs till XML med preg_replace i PHP så att XML kunde läsa specialtecknen

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Medlem
Skrivet av flashen:

Haha tack

Fixade problemet innan det skrivs till XML med preg_replace i PHP så att XML kunde läsa specialtecknen

Det känns som om du fixar fel sak bara. ú blir väl ett ú om jag inte har fel? Det ska skrivas som ú och inte som nån encoding, såvida du inte tvunget måste använda ISO-8859-1, men det är för det mesta att göra sig själv en otjänst.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Det känns som om du fixar fel sak bara. ú blir väl ett ú om jag inte har fel? Det ska skrivas som ú och inte som nån encoding, såvida du inte tvunget måste använda ISO-8859-1, men det är för det mesta att göra sig själv en otjänst.

Filen jag hämtar och cleanar med regex till XML har nativt "ú" tecken i sig och inte "ú" så de måste skrivas om för att lyckas validera med XSD

Felet ligger hos dom men det fungerar nu och den går igenom

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes