カスタム バリデーターを使用して、カスタム コンテンツ タイプ ドキュメント (xml 種類) を検証したいと考えています。xsd で検証したいが、メイン ドキュメントの特定の前処理の後でのみ。1.) スキーマの場所 (xsd) と名前空間がメイン ドキュメント ファイルで定義されていません。2.) 最初の理由の bcz など、xsd 検証を適用する前に、ドキュメント ファイルに前処理を行いたいと考えています。
したがって、xmlバリデーターを使用したいのですが、ファイルの前処理の後でのみです。
私の plugin.xml は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.core.runtime.contentTypes">
<content-type
id="com.xyz.ide.core.contentType.dummy"
base-type="org.eclipse.core.runtime.xml"
file-extensions="blabla"
/>
</extension>
<extension
point="org.eclipse.wst.sse.ui.sourcevalidation">
<validator
scope="total"
class="mc.CustomValidator"
id="com.xyz.myValidator">
<contentTypeIdentifier
id="com.xyz.ide.core.contentType.dummy">
<partitionType
id="org.eclipse.wst.xml.XML_DEFAULT">
</partitionType>
</contentTypeIdentifier>
</validator>
</extension>
</plugin>
CustomValidator.java
public class CustomValidator implements ISourceValidator, IValidator {
XMLValidator validator = new XMLValidator();
IDocument document;
public void validate(IValidationContext helper, IReporter reporter) {
String fileContent = this.document.get();
final InputStream is = new ByteArrayInputStream(fileContent.toLowerCase().getBytes());
// Whats the problem in this line???
XMLValidationReport report = validator.validate("/home/rchawla/xmlWorkspace/abc.xsd", is);
ValidationMessage[] messages = report.getValidationMessages();
for(ValidationMessage message:messages){
System.out.println(message.getMessage());
}
}
プラグインをデバッグ モードで実行すると、validate メソッドを実行できますが、ドキュメントは xsd で検証されません。ValidationMessage[] messages = report.getValidationMessages(); として、上記のメソッドで間違っているのは何ですか? メインのドキュメント ファイルにエラーがあるにもかかわらず、メッセージが表示されません。