Comments (5)
The real problem is that the XHTML Parser doesn't recognize XHTML entities
Original comment by [email protected]
on 21 Aug 2008 at 5:12
from wikimodel.
Here's how we do it in XWiki land:
// Parse the XHTML using an XML Parser and Wrap the XML elements in XMLBlock(s).
// For each XML element's text, run it through the main Parser.
XMLBlockConverterHandler handler = createContentHandler(parameters);
try {
XMLReader xr = XMLReaderFactory.createXMLReader();
xr.setContentHandler(handler);
xr.setErrorHandler(handler);
xr.setEntityResolver(this.entityResolver);
// Since XML can only have a single root node and since we want to allow
users to put
// content such as the following, we need to wrap the content in a root node:
// <tag1>
// ..
// </tag1>
// <tag2>
// </tag2>
String normalizedContent =
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n"
+ "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n" +
"<root>" + content + "</root>";
xr.parse(new InputSource(new StringReader(normalizedContent)));
} catch (Exception e) {
throw new MacroExecutionException("Failed to parse content as XML [" +
content + "]", e);
}
Note that we have a special entity resolver so that it works even when internet
is
off (or simply to speed things) and thus we have the 3 entity files
(xhtml-lat1.ent,
xhtml-special.ent and xhtml-symbol.ent) + the DTD file (xhtml1-strict.dtd).
Original comment by [email protected]
on 22 Aug 2008 at 7:10
from wikimodel.
See
http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-xml/src/main/java/o
rg/xwiki/xml/LocalEntityResolver.java
for the xwiki entity resolver implementation
Original comment by [email protected]
on 22 Aug 2008 at 7:22
from wikimodel.
Original comment by [email protected]
on 27 Aug 2008 at 1:41
- Added labels: Priority-Critical
- Removed labels: Priority-Medium
from wikimodel.
Fixed. This wasn't a problem of entity resolving.
Original comment by [email protected]
on 12 Sep 2008 at 7:15
- Changed state: Fixed
from wikimodel.
Related Issues (20)
- XHTMLParser does not support inner span HOT 3
- wikimodel's usage of cssparser breaks css4j HOT 2
- MediaWiki parser : to parse nested link/reference HOT 1
- MediaWikiParser - NullPointerException on two quote-blocks after empty lines HOT 2
- Confluence - multiline table HOT 1
- Confluence - more emoticons without space HOT 1
- Confluence - basic formating in bracklet HOT 1
- Introduce block nesting level limit
- XHTMLParser - table cells that start with an empty line are badly parsed HOT 1
- MediaWikiParser - Complex macro fails to be parsed as macro. Due to nested macro as paramter ? HOT 3
- [Confluence] Support HTML macro HOT 2
- MediaWiki - Not support <pre class="XXX"> HOT 1
- Confluence - Cannot combine "*" with noformat tag HOT 11
- Confluence 1.0 - The wrong result when parse a string HOT 8
- Error in parsing a text line containing a macro HOT 3
- Confluence - Support list in table HOT 20
- XHTML parser - Empty line before macro is not taken into account HOT 1
- MediaWiki: handle self-closing ref tags and more general <ref> syntax
- MediaWiki: skip HTML-style comments HOT 1
- MediaWiki: unescape html entities
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wikimodel.