Я не могу отобразить значение тега xml, используя пространство имен - тег с двоеточием.
Когда в тегах нет двоеточий, код работает отлично, но как только я хочу отобразить тег, который содержитдвоеточие, программа не выдает никакой ошибки, только не показывает никакого значения.
Вот XML:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:lst="http://www.esa.int/safe/sentinel-1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:inv="http://www.w3schools.com/daco">
<lst:howto>
<topic id="1">
<nieco>
<lst:title>Java</lst:title>
</nieco>
</topic>
</lst:howto>
</xsl:stylesheet>
XSL:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:lst="http://www.esa.int/safe/sentinel-1.0" >
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/">
topic
<xsl:for-each select="//nieco">
<xsl:value-of select="lst:title"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
и Java:
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.w3c.dom.Document;
class XMLtoCsVConversion2 {
public static void main(String args[]) throws Exception {
File stylesheet = new File("C:/java/howto.xsl");
File xmlSource = new File("C:/java/howto.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(xmlSource);
StreamSource stylesource = new StreamSource(stylesheet);
Transformer transformer = TransformerFactory.newInstance()
.newTransformer(stylesource);
Source source = new DOMSource(document);
Result outputTarget = new StreamResult(new File("xyz.csv"));
transformer.transform(source, outputTarget);
System.out.println("done");
}
}
Коды действительно упростили, чтобы найти причину проблемы, но я не смог ее выяснить.Если бы я удалил lst: from tag в xml и xsl, это сработало бы, как только появилось двоеточие, программа не показала бы никакого значения.Но XML, который мы получаем, содержит множество тегов с двоеточием, поэтому я бы решил эту проблему.
Пожалуйста, если у вас есть идеи, где может быть проблема, пожалуйста, дайте мне знать:)
Спасибо
Ожидаемый вывод: тема Java