Web'den bir html belgesine xslt dönüşümü uygulamak için Java (6) XML-Api'yi kullanıyorum. Bu belge iyi biçimlendirilmiş xhtml'dir ve bu nedenle geçerli bir DTD-Spec (<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
) içerir. Şimdi bir sorun oluştu: Uppon transformasyonu, XSLT-İşlemcinin DTD'yi indirmeyi denediğini ve w3-sunucusunun bunu bir HTTP 503 hatasıyla reddettiğini (Bandwith Limitation w3 ile) reddediyor.Java, xml, XSLT: DTD Doğrulamasını Önleme
XSLT İşlemcisinin dtd dosyasını nasıl indirmesini engelleyebilirim? Giriş dokümanımın onaylanmış olmasına gerek yok.
Kaynak:
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
- Ben burada SO aşağıdaki quesitons okumak
String xslt = "<?xml version=\"1.0\"?>"+
"<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">"+
" <xsl:output method=\"text\" />"+
" <xsl:template match=\"//html/body//div[@id='bodyContent']/p[1]\"> "+
" <xsl:value-of select=\".\" />"+
" </xsl:template>"+
" <xsl:template match=\"text()\" />"+
"</xsl:stylesheet>";
try {
Source xmlSource = new StreamSource("http://de.wikipedia.org/wiki/Right_Livelihood_Award");
Source xsltSource = new StreamSource(new StringReader(xslt));
TransformerFactory ft = TransformerFactory.newInstance();
Transformer trans = ft.newTransformer(xsltSource);
trans.transform(xmlSource, new StreamResult(System.out));
}
catch (Exception e) {
e.printStackTrace();
}
, ama hepsi başka bir XML-Api kullanın:
Teşekkürler!
Sadece birisinin aynı sorunları varsa: Bu doğru yöne doğru yol alır (bu yüzden cevabı kabul ettim). DTD'yi iade etmek istemiyorsanız, boş bir tane de döndürebilirsiniz. – theomega
Lütfen büyük harf yazımı düzeltin: 'XmlReader', 'XMLReader' olmalıdır – wau