※ ChatGPTを利用し、要約された質問です(原文:XSLT変換した際、必要のないxmlns宣言が入ってしまう)
XSLT変換で生成されるXHTMLに含まれる不要なxmlns宣言について
このQ&Aのポイント
XSLT変換した際、生成されるXHTMLには不要なxmlns宣言が含まれてしまいます。
XSLTのtemplateでmatchした時に挿入される要素に、不要な名前空間接頭辞宣言が付いてしまう問題が発生しています。
これによりxhtml1.0の妥当性が損なわれてしまうため、解決策を探しています。
XSLT変換した際、必要のないxmlns宣言が入ってしまう
標準JavaAPIのXSLT(Transformerクラス)(実体はXerces)を使用して、
複数のXML文書からXHTMLを作成していますが、
作成されたXHTMLに、必要のないxmlns宣言が含まれてしまいます。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:hoge="http://hogehoge"
xmlns:hage="http://hagehage">
...いろいろ...
</html>
のような感じです。
このXHTMLの中に、もはやhogeやhageの名前空間の要素は存在していないのに書き込まれてしまいます(そしていらないです)。
おかげでxhtml1.0の妥当性が損なわれてしまっています。
どうやらXSLTのtemplateでmatchした時に挿入する要素に、matchした名前空間接頭辞宣言が付いてしまうようなのですが、これを回避する方法はありませんでしょうか。
質問内容が分かりにくそうなので、補足要求もどんどんお願いします。
お礼
おおおーお久しぶりですhimajin100000さん。 まさにヒントというか答えそのものですね! 一瞬で見事解決です。 ありがとうございました。