@@ -16,10 +16,13 @@ import (
1616// PidxXML maps the PIDX file format.
1717// Ref: https://github.com/ARM-software/CMSIS_5/blob/develop/CMSIS/Utilities/PackIndex.xsd
1818type PidxXML struct {
19- XMLName xml.Name `xml:"index"`
20- Vendor string `xml:"vendor"`
21- URL string `xml:"url"`
22- Timestamp string `xml:"timestamp"`
19+ XMLName xml.Name `xml:"index"`
20+ Vendor string `xml:"vendor"`
21+ URL string `xml:"url"`
22+ Timestamp string `xml:"timestamp"`
23+ SchemaVersion string `xml:"schemaVersion,attr"`
24+ XsiSchemaLocation string `xml:"xs:noNamespaceSchemaLocation,attr"`
25+ XmlnsXs string `xml:"xmlns:xs,attr"`
2326
2427 Pindex struct {
2528 XMLName xml.Name `xml:"pindex"`
@@ -32,12 +35,11 @@ type PidxXML struct {
3235
3336// PdscTag maps a <pdsc> tag that goes in PIDX files.
3437type PdscTag struct {
35- XMLName xml.Name `xml:"pdsc"`
36- Vendor string `xml:"vendor,attr"`
37- URL string `xml:"url,attr"`
38- Name string `xml:"name,attr"`
39- Version string `xml:"version,attr"`
40- Timestamp string `xml:"timestamp,attr"`
38+ XMLName xml.Name `xml:"pdsc"`
39+ Vendor string `xml:"vendor,attr"`
40+ URL string `xml:"url,attr"`
41+ Name string `xml:"name,attr"`
42+ Version string `xml:"version,attr"`
4143
4244 err error
4345}
@@ -136,10 +138,15 @@ func (p *PidxXML) Update(vidx *VidxXML, vidxFileName string, outputFileName stri
136138 filename := filepath .Base (vidxFileName )
137139 p .Vendor = strings .TrimSuffix (filename , filepath .Ext (filename ))
138140 p .URL , _ = filepath .Abs (outputFileName )
139- p .URL = "file://" + filepath .ToSlash (p .URL )
141+ p .URL = "file:/// " + filepath .ToSlash (p .URL )
140142 t := time .Now ()
141143 p .Timestamp = t .Format ("2006-01-02T15:04:05" )
142144
145+ // Set schemaVersion and schema location attributes as required by PackIndex.xsd
146+ p .SchemaVersion = "1.1.1"
147+ p .XsiSchemaLocation = "PackIndex.xsd"
148+ p .XmlnsXs = "http://www.w3.org/2001/XMLSchema-instance"
149+
143150 var wg sync.WaitGroup
144151
145152 // Process package index first
@@ -154,7 +161,6 @@ func (p *PidxXML) Update(vidx *VidxXML, vidxFileName string, outputFileName stri
154161 // Now process package descriptors (vendors without pidx files)
155162 offset := vidx .PidxLength ()
156163 for i , pdsc := range vidx .ListPdsc () {
157-
158164 errs [i + offset ] = make ([]error , 1 )
159165 errs [i + offset ][0 ] = p .addPdsc (pdsc )
160166 }
0 commit comments