标签: dtd

尝试在ANDROID资源中使用<!ENTITY并出现错误:"实体已被引用,但未被声明."

我正在按照此解决方案在我的字符串资源文件中使用enetities:

是否可以直接在Android资源XML文件中进行字符串替换?

我在资源树中使用外部文件:/res/raw/entities.dtd,其内容:

<!ENTITY ent_devicename "MyDeviceName">
Run Code Online (Sandbox Code Playgroud)

string.xml资源文件中:

<!DOCTYPE resources [
    <!ENTITY % ent_devicename SYSTEM "../raw/entities.dtd">
    %ent_devicename;
]>

<resources>
    <string name="name">The name is &ent_devicename;</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

实体"ent_devicename"已被引用,但未被声明.

如您所见,Android Studio可识别外部实体文件:

在此输入图像描述

和实体:

在此输入图像描述

有人能提供一个正确的例子来使事情有效吗?我的意思是一个完全可编译的Android Studio项目,在单独的文件中包含实体声明.

更新 好的,如果你更加关注这个w3schools链接:

https://www.w3schools.com/xml/xml_dtd_entities.asp

你看到了解决方案:

外部entities.dtd文件包含

<!ENTITY ent_devicename "MyDeviceName">
Run Code Online (Sandbox Code Playgroud)

那么新的字符串资源资源:

<?xml version="1.0" encoding="utf-8"?>

    <!DOCTYPE resources [
        <!ENTITY ent_devicename SYSTEM "../raw/entities.dtd">
        ]>

<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="Typos">
    <string name="ent_devicenamxxe2">&ent_devicename;</string>
Run Code Online (Sandbox Code Playgroud)

我改变了<!ENTITY % ent_devicename<!ENTITY ent_devicename(不再%)我删除%ent_devicename;

现在它编译但是生成的APK似乎忽略了实体值(使用空字符串).所以问题没有解决!

让我知道!

xml dtd android-resources android-studio android-gradle-plugin

20
推荐指数
1
解决办法
1780
查看次数

如何在有效的XML文档中定义HTML实体引用?

我需要能够引用命名的HTML实体,&bull;而不是&#8226;XML文档中的Unicode替代.我可以控制XML文档的某些部分,例如定义DOCTYPE,但在实际的XML中进行查找和替换不是一种选择.我能得到这样一些元素&nbsp;,并&amp;通过包括XHTML过渡DOCTYPE,但我需要更多的手动定义.我该怎么做呢?

- 编辑 -

感谢Jim的回答,这就是我最终的结果.这很好,因为我可以使用XHTML过渡实体,并添加我自己的:

<!DOCTYPE
   html
   PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
   [
      <!ENTITY bull  "&#8226;">
      <!ENTITY ldquo "&#8220;">
      <!ENTITY rdquo "&#8221;">
      ... etc ...
   ]
>
Run Code Online (Sandbox Code Playgroud)

xml xhtml dtd

17
推荐指数
1
解决办法
1万
查看次数

忽略scala中的DTD规范

我想在使用Scala解析xml文件时偶尔忽略dtd规范.我知道这可以通过java接口很容易地完成

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

dbf.setValidating(false);
dbf.setFeature("http://xml.org/sax/features/namespaces", false);
dbf.setFeature("http://xml.org/sax/features/validation", false);
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何使用Scala的xml库轻松完成此操作.如果可能的话,我想继续使用scala xml库,因为它明显更好.

提前致谢!

xml dtd scala

17
推荐指数
1
解决办法
8010
查看次数

XML,DTD:如何使订单不重要

我开始使用XML文件和解析器作为存储数据的便捷方式

我想使用DTD来检查xml文件到达时的结构.

这是我的DTD文件

< ?xml version="1.0" encoding="UTF-8"?>
< !ELEMENT document (level*)>
< !ELEMENT level (file,filelName?,fileNumber?)>
< !ELEMENT file (#PCDATA)>
< !ELEMENT filelName (#PCDATA)>
< !ELEMENT fileNumber (#PCDATA)>
Run Code Online (Sandbox Code Playgroud)

(请注意,fileName和fileNumber实际上是纯可选的)

<document>
 <level>
  <file>group1file01</file>
 </level>
 <level>
  <file>group1file02</file>
  <fileName>file 2</fileName>
  <fileNumber>0</fileNumber>
 </level>
...
Run Code Online (Sandbox Code Playgroud)

所以这一切都很好.(我现在使用eclipse"validate"选项来测试它)

然而,在测试时我得到了我认为是一个奇怪的错误

如果我做

 <level>
  <levelName>Level 2</levelName>
  <levelNumber>0</levelNumber>
        <file>group1level02</file>
 </level>
Run Code Online (Sandbox Code Playgroud)

更改行的顺序,Eclipse拒绝验证它...

我想知道这是否是Eclipse的问题,或者订单是否真的很重要.

如果订单很重要,我怎样才能更改DTD以使其无论元素的排序如何都能正常工作?

我无法真正改变XML,因为我已经编写了所有的XML文件和解析器(我知道我的方法是错误的)

xml dtd

16
推荐指数
3
解决办法
1万
查看次数

Scala/Java不尊重w3"多余的dtd流量"规范吗?

我是Scala的新手,所以我可能不在此基础上,我想知道问题是否是我的代码.鉴于Scala文件httpparse,简化为:

object Http {
   import java.io.InputStream;
   import java.net.URL;

   def request(urlString:String): (Boolean, InputStream) =
      try {
         val url = new URL(urlString)
         val body = url.openStream
         (true, body)
      }
      catch {
         case ex:Exception => (false, null)
      }
}

object HTTPParse extends Application {
   import scala.xml._;
   import java.net._;

   def fetchAndParseURL(URL:String) = {
      val (true, body) = Http request(URL)
      val xml = XML.load(body) // <-- Error happens here in .load() method
      "True"
   }
}
Run Code Online (Sandbox Code Playgroud)

运行哪个(URL无关紧要,这是一个笑话示例):

scala> HTTPParse.fetchAndParseURL("http://stackoverflow.com")
Run Code Online (Sandbox Code Playgroud)

结果总是:

   java.io.IOException: Server returned HTTP response code: …
Run Code Online (Sandbox Code Playgroud)

java xml w3c dtd scala

15
推荐指数
3
解决办法
3910
查看次数

xmllint:如何使用本地DTD文件验证XML

我有一个本地DTD文件test.dtd.内容是:

<!DOCTYPE coord [
<!ELEMENT coord (date)>
<!ELEMENT date (#PCDATA)>
]>
Run Code Online (Sandbox Code Playgroud)

我想使用xmllint验证XML.此XML中没有DOCTYPE:

<?xml version="1.0" encoding="x-mac-roman"?>
<coord>
    <date>20150312</date>
</coord>
Run Code Online (Sandbox Code Playgroud)

如果我将DTD块作为第二行插入到我的XML文件的副本中并使用:

xmllint --valid --noout my2.xml
Run Code Online (Sandbox Code Playgroud)

但是当我尝试:

xmllint --loaddtd test.dtd --valid --noout my.xml

xmllint --dtdvalid test.dtd --noout my.xml
Run Code Online (Sandbox Code Playgroud)

两者都不起作用.结果是:

test.dtd:1: parser error : Content error in the external subset
<!DOCTYPE coord [
^
test.dtd:1: parser error : Content error in the external subset
<!DOCTYPE coord [
^
Could not parse DTD test.dtd
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?看来我的XML 必须包含一个DOCTYPE行(带有SYSTEM关键字)来引用我想要避免的外部DOCTYPE文件.请参阅:http://www.w3schools.com/dtd/

有没有修改XML的解决方案?

xml dtd file local xmllint

15
推荐指数
1
解决办法
1万
查看次数

如何在java的xpath中在运行时禁用dtd?

我在文件中得到了dtd,我无法将其删除.当我尝试用Java解析它时,我得到"引起:java.net.SocketException:网络无法访问:连接",因为它的远程dtd.我能以某种方式禁用dtd检查吗?

java doctype xpath dtd

14
推荐指数
2
解决办法
2万
查看次数

移动文档类型定义

移动网站无法正确显示.即使我有正确的DTD,我也必须放大才能正确查看我的网站:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" 
"http://www.wapforum.org/DTD/xhtml-mobile12.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>MySite Mobile</title>
<link rel="stylesheet" type="text/css" href="mobile.css"/>
</head>
<body>
<!-- content -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我有正确的DTD吗?

mobile dtd

14
推荐指数
1
解决办法
311
查看次数

官方播客DTD在哪里?

播客HOWTO苹果网站上显示了一个示例XML文件,该文件是指播客DTD: podcast-1.0.dtd.遗憾的是,此地址不提供DTD.我听说您可以使用feedvalidator.org验证Feed,但它只是一项服务.还有其他官方播客DTD可用的位置吗?

DTD给出为xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd".此URL实际上不会解析为DTD.

xml podcast dtd

13
推荐指数
2
解决办法
2354
查看次数

免费XSD到DTD转换实用程序?

我有一个XSD(XML Schema),我需要转换为DTD.有没有免费的实用工具或简单的方法来实现这一目标?以XSLT为例?Python脚本也是受欢迎的.

注意:这是Free DTD到XSD转换实用程序问题的相反方向

我知道转换可能会丢失信息......

我尝试过XMLSpy或oXygenXML,但它不是免费的,我没有定制转换的可能性.

xsd dtd converters

13
推荐指数
1
解决办法
3738
查看次数