- From: James Ingram <j.ingram@netcologne.de>
- Date: Mon, 21 Nov 2016 13:06:04 +0100
- To: www-svg@w3.org
Hi, For some years, I've been using SVG to write and parse music scores containing MIDI information (using a special namespace). See the thread in this list's archives at [1]. Such scores can be displayed in browsers, and can be the basis for many interesting web or desktop applications. The SVG writer [2] and parser applications [3][4] have to agree on both a specific set of SVG container classes and a specific set of SVG element class names. For example, I'm using container classes that nest rather like this: <g class="system" ...> <g class="staff" ...> <g class="voice" ...> <g class="chord" ...> <!-- ordinary SVG graphics go here --> <score:midiChord> <!-- MIDI information in the "score" namespace--> <!-- This info is ignored by browsers, but accessible to Javascript --> </score:midiChord> </g> ... </g> ... </g> ... </g> Each <g> element can contain other elements and/or attributes, and one or more <g> elements in the level below. Apart from the container classes and hierarchy, I also want to define a set of classes for simple elements, and to define where those elements can be found in the container hierarchy. For example, a <line class="slur" ... /> would only be expected inside a <g class="voice" ...> container. I would like to enable other programmers to write applications that write or parse such files, and I would like the solution to be generalisable. For example, there may be different ways to organise the container hierarchy for different kinds of score, and some scores might use a different set of class names. Ideally, a client application should be able to check that it is looking for the right containers and class names by looking at a declaration at the top of the file. As with namespaces, such a declaration should allow the file to be automatically verified. So my questions are: Is there any way to define such container hierarchies and class names formally? Are there any precedents for defining specialised SVG document types like this? Is there some other strategy I could/should adopt? I've considered using: a) a namespace -- Using a namespace to define elements like "score:chord" won't work because the score would not then display at all in browsers! b) foreignObject -- instead of <g> elements. I don't think this can be made to work because foreignObjects have bounding boxes, and the above containers have to overlap graphically. Also, this does not solve the problem of defining class names. Any help would be much appreciated. All the best, James Ingram [1] https://lists.w3.org/Archives/Public/www-svg/2010Oct/0160.html [2] https://github.com/notator/Moritz [3] https://github.com/notator/assistant-performer [4] http://james-ingram-act-two.de/open-source/assistantPerformer/assistantPerformer.html
Received on Monday, 21 November 2016 12:06:41 UTC