- From: L <L@koonts.com>
- Date: Thu, 11 Dec 2003 18:02:30 +0100
- To: www-svg@w3.org
crosswordplayer FIXMEs (was "Re: SVG crosswordplayer first release!!")
Renamed thread in order not to confuse the ongoing interesting
discussion.
Thanks for all of the help! Specifically for detailed emails from
Tobias Reif and Thomas DeWeese, quoted below. And especially to Jim Ley
and #svg.
L.
On Dec 1, 2003, at 2:38 PM, Tobias Reif wrote:
> 1. Batik Squiggle says that the CSS has an error:
[...]
> 2. The SVG itself is invalid too:
[...]
> If you don't want to install validators locally you can surf to
> http://www.pinkjuice.com/check/?
> url=http%3A%2F%2Fwww.koonts.com%2Fcrossword%2Fcrossword.svg
>
I use xmllint, er much more frequently now. Validators are helpful in
spellchecker capacity, reguardless of other discussions. :).
xmllint keeps giving a warning about style, not sure if it matters, the
latest one is:
Entity: line 1: validity warning: Attribute space of element style:
already defined
%SVG.Core.attrib;
^
> crossword.svg:1168: element rect: validity error : ID handler already
> defined
> /tspan></text><rect id="handler" x="0" y="0" width="30" height="1.5"
> opacity="0"
CSS & Batik Squiggle :
In Batik Squiggle, ids which are used in both CSS and SVG must be
unique in the SVG. This is much more strict than the ASV viewer, but
seems reasonable and correct to me. However, it does seem that CSS has
.bla and SVG has <rect id="bla" class="bla"> should not generate an
error.
> crossword.svg:8: element svg: validity error : No declaration for
> attribute onkeyup of element svg
> xmlns:xlink="http://www.w3.org/1999/xlink">
After much testing, the following seems to work in both ASV & Batik:
<script type="text/ecmascript"> <![CDATA[
[...]
var svgDoc
var svgRoot
function handle_onload(evt) {
svgDoc = evt.target.ownerDocument
svgRoot = svgDoc.documentElement
svgRoot.addEventListener('click',handle_click,false)
svgRoot.addEventListener('keydown',handle_key,false)
[...]
}
function handle_key(evt) {
try {
if (!evt) { var evt = window.event }
var code = evt.keyCode ? evt.keyCode :
evt.which ? evt.which : void 0
[...]
}
keyup events are preferable, as they only register once per key, but
they do not work on Batik at all.
keypress events do not include DELETE, TAB, Left Arrow ...
I am happy to be able to have the functionality now. This kind of
temporary work around in new things is common. I will be thrilled to
replace this "it works now" key handling with proper will work
everywhere in the spec key handling. Following clear and reasonable
specifications is fine, tuning basic operability for every not well
documented peculiarity of each version/platform/bla/bla of a viewer is
annoying.
On Dec 2, 2003, at 2:59 PM, Thomas DeWeese wrote:
>
> Recent version of Batik now only produce a warning and continues
> to display the document.
I downloaded and have been testing with Batik 1.5, is this the "recent"
version or does "recent" refer to a build from cvs?
>
> Actually the dependencies on ASV extensions appear to be minimal.
> I found only four additional issues (one might be Batik's).
>
> 1) parseXML w/o a document
> 2) getDocumentElement on the return value from parseXML.
Thanks, this code is much better. Technically, it should have worked as
it was. And allows for better catching of 'file loaded' status.
Especially as I'd like to add a couple of retrys to the getURL process.
Note that parseXML now returns a Document Fragment, not a Document.
<script type="text/ecmascript"> <![CDATA[
[...]
getURL(url, fileLoaded)
[...]
function fileLoaded(data) {
var string = ''
if (data.success) {
string = data.content
} else {
view.progress.message("loadFile : Puzzle not retrieved. May be
slow server response, try again.")
return
}
makeCrossword(parseXML(string, svgDoc))
}
[...]
function makeCrossword(svgDocFragment) {
var xmlRoot = svgDocFragment.firstChild // xmlRoot is the XML "puzzle"
element
[...]
> 4) The CSS for text.clue's uses .3em - to get this right I have
> to use .09em in Batik. This may indicate that Batik is using
> the wrong base value to calculate em sizes in this case
> (.3*.3 = 0.9 so if one of the parent elements has
> font-size=".3em" and Batik misses it then you might see
> this issue).
I haven''t had time to look at this yet. Am hoping there is some way
that works in both.
SVG private attribute:
I am using this to create a "binding" between a JS object and a SVG
object. Then I 'pretend' that the two objects are one SVGJS object. It
works in Safari. I am not having much luck with using the private
attribute in Batik. And so, even though the crossword does build
correctly (except for the lager clues), much of the functionality is
missing. Including the crossword and control menu "show" functions. In
this case, the functions change the "display" value to "inherit" or
"none". While it is changed in the DOM, the change is not reflected in
the viewer. I wanted to put up crosswordplayer 1.0b3 for FIXMEs and
have it working with Batik, but i have to admit defeat at the moment.
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"
[
<!ENTITY % SVG.Core.extra.attrib
"xmlns:svgjs CDATA #FIXED 'http://schema.koonts.com/svgjs'
svgjs:binding CDATA #IMPLIED"
>
]>
<script type="text/ecmascript"> <![CDATA[
[...]
var svgjsNS = "http://schema.koonts.com/svgjs"
[...]
Following are results of tests of get and set attrubute, run in order
of a1..a5. Batik and Safari differ in interpretation.
Here, results are from log messages following calls to has,set,get
attrubute:
GET after SET in BATIK and SAFARI BATIK SAFARI
AttributeNS(svgjsNS, 'binding', 'a1') a5, a1 a5,
a1
Attribute('binding', 'a2') a2 a5,
a2
Attribute('svgjs:binding', 'a3') a3 a3
AttributeNS('svgjs', 'binding', 'a4') a4 a4
AttributeNS(svgjsNS, 'svgjs:binding', 'a5') no attribute no
attribute
Here I am guessing at the NAMESPACE:
SET in BATIK's DOM Viewer NAMESPACE? NAME
VALUE
svgNS(default)
xmlns:svgjs http://schema.koonts.com/svgjs
AttributeNS(svgjsNS, 'binding', 'a1') svgjsNS binding
a1
Attribute('binding', 'a2') svgNS(default)
binding a2
Attribute('svgjs:binding', 'a3') svgNS(default)
svgjs:binding a3
AttributeNS('svgjs', 'binding', 'a4') svgjs
binding a4
AttributeNS(svgjsNS, 'svgjs:binding', 'a5') svgjsNS
svgjs:binding a5 (replaces? binding a1)
Received on Thursday, 11 December 2003 12:03:45 UTC