Dojo with application/xml+xhtml content-type
Asked Answered
B

3

6

How can I get Dojo Dijits (1.5.0, currently) to work with XHTML as application/xml+xhtml? It works if sent as text/html, but application/xml+xhtml is required.

This seems to be tied to dijit.form.DatePicker and a few others.

This isn't a matter of validating against W3C, it just plain doesn't work, at all.

Error: mismatched tag. Expected: </br>.
Source File: 
Line: 5, Column: 54
Source Code:
  ><div class="dijitReset dijitValidationIcon"><br></div

JavaScript execution stops because of this error.

Obviously, I can recompile Dojo, and fix all of these individually, but this is a lot of work, and does not fix everything.

Once again, it works with text/html, but application/xml+xhtml is required.

Balzer answered 19/7, 2010 at 23:56 Comment(5)
possible duplicate of Dojo - XHTML validation ?Mickens
FWIW, in 1.5 Dijit seems to have fixed all the XHTML validation in the templates. Also worth pointing out Dojo 1.4.3/1.5 is completely XHTML compatible, the Dijit library was the offender here.Inferior
Still not working as application/xml+xhtml with Dojo 1.5.Balzer
What type of build are you using? What is the setup that you are doing to generate this error? What server side technology are you using?Somewise
Using the latest 1.5 from Google CDN, setup is as simple as <div dojoType="dijit.form.DateTextBox"></div>. SS is irrelevant, as JavaScript is frontend, but PHP.Balzer
S
1

I asked about the server side in case you were serving up your own build. Anyway, I know you don't want to do individual patches and rebuilds, but I think there is a solution where you can "patch" yet don't have to rebuild. Since the build internalizes the string into the function constructor, you can change it by using the extend functionality. In this case, for ValidationTextBox, you can do

dijit.form.ValidationTextBox.extend({
    templateString: "<div>apple sauce</div>"
});

This will get all future instantiation of dijit.form.ValidationTextBox to use the new template string. Though this might not be ideal, but it might be the only way for you to fix this without rebuilding the entire thing. Probably something in the form of,

dojo.require("dijit.form.ValidationTextBox");
dojo.require("my.ValidationTextBoxFix");

Good luck.

Somewise answered 25/8, 2010 at 22:49 Comment(0)
C
4

This was fixed with the upcoming (as in this week) release of the Dojo Toolkit 1.5, but if you find the corresponding Dijit template in question, you can just change it to
without any side effects.

Hope that helps.

Carollcarolle answered 20/7, 2010 at 17:46 Comment(3)
Using Dojo 1.5 now, but still have the same issues as before.Balzer
This is odd, I am looking through the source code for both 1.4.3 and 1.5, the 1.5 source code does not have the bug you mentioned. svn.dojotoolkit.org/src/tags/release-1.4.3/dijit/form/templates/… vs svn.dojotoolkit.org/src/tags/release-1.5.0/dijit/form/templates/…. As you can see, the <br> does not exist in version 1.5.Somewise
Actually, the ValidationTextBox is malformed indeed. it has this snippet: /dex="-1" readOnly waiRole/ where it should be: /dex="-1" readonly="readonly" waiRole/ Notice the part about the readonly.Balzer
S
1

I asked about the server side in case you were serving up your own build. Anyway, I know you don't want to do individual patches and rebuilds, but I think there is a solution where you can "patch" yet don't have to rebuild. Since the build internalizes the string into the function constructor, you can change it by using the extend functionality. In this case, for ValidationTextBox, you can do

dijit.form.ValidationTextBox.extend({
    templateString: "<div>apple sauce</div>"
});

This will get all future instantiation of dijit.form.ValidationTextBox to use the new template string. Though this might not be ideal, but it might be the only way for you to fix this without rebuilding the entire thing. Probably something in the form of,

dojo.require("dijit.form.ValidationTextBox");
dojo.require("my.ValidationTextBoxFix");

Good luck.

Somewise answered 25/8, 2010 at 22:49 Comment(0)
E
-1

in xhtml you should have

<br/>

or

<br></br>

but I'm curious: who requires xhtml and for what?

Edmon answered 20/7, 2010 at 0:7 Comment(2)
Dojo is generating this, not me.Balzer
So you need to either fix the Dojo that's generating invalid X(HT)?ML, or you need to file a bug and wait for a fix.Poaceous

© 2022 - 2024 — McMap. All rights reserved.