android / android/project-replicator

xml parser skips files with DOCTYPE entries

Open
#39 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Kotlin
Stars
136
Forks
40
PR merge metrics
No merged PRs in 30d

Description

```
> Task :my-module:gatherModuleInfo
e: Invalid xml file my-module/src/main/res/values/strings.xml
line 4; column 10: DOCTYPE is disallowed when the feature "http://apache.org/xml/features/disallow-doctype-decl" set to true.










]>
```
Then later we can refer to these standard entity names in the strings:
```
One last thing…
```
In this case, we prefer to use `…` here, because it is more meaningful for translators, and it is more grammatically correct. I.e., using `…` vs `...`. It also translates differently for some languages - for example, some languages prefer a different type of ellipsis, like the midline (`⋯`) or vertical ellipsis (`⋮`).

Inlining the unicode character can often be difficult for people reading the file to understand that it is a unicode character rather than its similar non-unicode counterpart (i.e., `'` apostrophe vs `’` right-single quotation or rsquo), which is why we use the `&#<>;` notation. And inlining that notation into the string, someone reading the file won't understand what that number represents unless they look it up.

So the workaround is using the named XML entity: it gives us the exact unicode representation, with a meaningful name, without compromising the character width which can have an impact on some older editors that aren't well equipped to handle multi-byte unicode characters.

Contributor guide

Open the contributing guide

Research direction

Start at the code behind the :my-module:gatherModuleInfo task and the parsing of my-module/src/main/res/values/strings.xml. Check how the XML parser handles the reported DOCTYPE and add coverage for named entities such as …. Done means the file is parsed instead of skipped and the named entities remain usable in strings.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.