Page 1 sur 1

[R] XML et SVG et namespace difficultés

Posté : sam. 17 oct. 2020 09:17
par FlecheBleu
Bonjour la Communauté,

Je bloque sur cette histoire de namespace , je pense !!

Je voudrais lire un fichier XML qui contient du balisage SVG.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.2" width="149.2mm" height="211.7mm" viewBox="0 0 14920 21170" preserveAspectRatio="xMidYMid" fill-rule="evenodd" stroke-width="28.222" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:presentation="http://sun.com/xmlns/staroffice/presentation" xmlns:smil="http://www.w3.org/2001/SMIL20/" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xml:space="preserve">
 <defs>...</svg>
J'ai ce bout de code pour vérifier la prise en compte du fichier:
$oXML = ObjCreate('Msxml2.DOMDocument.6.0')

; Setting File IN/OUT

$Fichierin="e:\in.svg"
$Fichierout= StringReplace($Fichierin,".","-maj.")

; Calling  XML File

$oXML.load($Fichierin)
$oXML.setProperty("SelectionLanguage", "XPath")
$strNameSpc = "xmlns:svg='http://www.w3.org/2000/svg'"
$oXML.setProperty("SelectionNamespaces", $strNameSpc)


$oRoot = $oXML.selectSingleNode("//svg:defs")

ConsoleWrite("$oRoot.xml=[" & $oRoot.xml  & "]" & @CRLF)
Résultat => vide.

Par contre, si je supprime l’entête du fichier SVG comme ceci:

<svg version="1.2" width="149.2mm" height="211.7mm" viewBox="0 0 14920 21170" preserveAspectRatio="xMidYMid" fill-rule="evenodd" stroke-width="28.222" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:presentation="http://sun.com/xmlns/staroffice/presentation" xmlns:smil="http://www.w3.org/2001/SMIL20/" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xml:space="preserve">
 <defs>... </svg>

C'est ok j'ai bien le fichier XML qui peut être utilisé dans Autoit.

Auriez-vous des pistes de recherche ?

Merci par avance ;-)

Re: XML et SVG et namespace difficultés  

Posté : dim. 18 oct. 2020 03:40
par FlecheBleu
Résolu :

https://dev.w3.org/SVG/profiles/2.0/publish/intro.html

Note en marge :

Malheureusement, les DTD SVG sont à l'origine de tant de problèmes que le groupe de travail SVG a décidé de ne pas en rédiger une pour la prochaine norme SVG 1.2. En fait, les membres du groupe de travail SVG disent même aux gens de ne pas utiliser de déclaration DOCTYPE dans les documents SVG 1.0 et 1.1. Au lieu de cela, il faut toujours inclure les attributs "version" et "baseProfile" sur la balise racine <svg> et leur attribuer des valeurs appropriées.

donc un s'impose un :
_FileWriteToLine($Fichierin, 2, "<!--DOCTYPE REMOVED-->", 1)
Merci à tous ;-)