android / android/project-replicator
xml parser skips files with DOCTYPE entries
- 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
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