use*_*004 5 java xslt annotations
我有一个XML文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
</catalog>
Run Code Online (Sandbox Code Playgroud)
而这个XSL文件:
<?xml version="1.0" ?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:value-of select="/catalog/cd/artist"/>
<xsl:variable name = "artist" select = "/catalog/cd/artist()"/>
<xsl:variable name="year" select="/catalog/cd/year()"/>
<xsl:Object-bean name="{$artist}" id="{$year}">
</xsl:Object-bean>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
现在我想将结果转换为Java类.
Java的:
@XmlRootElement(name = "Object-bean")
@XmlAccessorType(XmlAccessType.NONE)
public class ObjectBean {
@XmlAttribute(name = "name")
private String name;
@XmlAttribute
private String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时它会向我显示这个错误:
Error at xsl:Object-bean on line 7 column 49 of test.xsl:
XTSE0010: Unknown XSLT element: Object-bean
Exception in thread "main" javax.xml.transform.TransformerConfigurationException: Failed to compile stylesheet. 1 error detected.
at net.sf.saxon.PreparedStylesheet.prepare(PreparedStylesheet.java:176)
at net.sf.saxon.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:139)
at net.sf.saxon.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:91)
at XslExecutor.main(XslExecutor.java:28)
Run Code Online (Sandbox Code Playgroud)
XML 保存原始数据(文档 A)。XSLT 是一个转换模板,它将 XML 数据(文档 A)转换为其他 XML 文档(文档 B)。最后,您尝试将 XSLT 模板(文档 B)的输出编组为用 JAXB 注释的 POJO。JAXB 注释的工作方式与 XSLT 模板类似。它们提供 XML 和 POJO 之间的绑定机制。
XSLT JAXB
Run Code Online (Sandbox Code Playgroud)
(XML 文档 A) ------------------> (XML 文档 B) ------------------ -->POJO
这就是为了达成共识,您显示的输出表明 XSLT 转换失败。事实上,您提供的 XSL 是完全错误的。从类似这样的内容开始,它适用于您提供的 XML:
<?xml version="1.0" ?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:element name="Object-bean">
<xsl:attribute name="artist">
<xsl:value-of select="/catalog/cd/artist"/>
</xsl:attribute>
<xsl:attribute name="year">
<xsl:value-of select="/catalog/cd/year"/>
</xsl:attribute>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4364 次 |
| 最近记录: |