我想转换以下xml,
CREATE TABLE MovieGenre (
movieId INT,
genreId INT,
UNIQUE KEY (movieId, genreId),
FOREIGN KEY (movieId) REFERENCES Movies (id),
FOREIGN KEY (genreId) REFERENCES Genres (id)
)
以此xml格式。
<pets>
<Pet>
<category>
<id>4</id>
<name>Lions</name>
</category>
<id>9</id>
<name>Lion 3</name>
<photoUrls>
<photoUrl>url1</photoUrl>
<photoUrl>url2</photoUrl>
</photoUrls>
<status>available</status>
<tags>
<tag>
<id>1</id>
<name>tag3</name>
</tag>
<tag>
<id>2</id>
<name>tag4</name>
</tag>
</tags>
</Pet>
</pets>
我尝试按如下方式编写模板,但它会删除带有子元素的父元素。
<pets>
<Pet>
<category>
<id>4</id>
<name>Lions</name>
</category>
<id>9</id>
<name>Lion 3</name>
<photoUrl>url1</photoUrl>
<photoUrl>url2</photoUrl>
<status>available</status>
<tag>
<id>1</id>
<name>tag3</name>
</tag>
<tag>
<id>2</id>
<name>tag4</name>
</tag>
</Pet>
</pets>
如何在xslt中完成此操作。任何帮助表示赞赏。
答案 0 :(得分:3)
我会这样做:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml" />
<xsl:template match="photoUrls|tags">
<!-- Apply identity transform on child elements of photoUrls/tags-->
<xsl:apply-templates select="*"/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:2)
以下xslt完成了这项工作,
mockFoo = EasyMock.createMock(Foo.class);
EasyMock.expect(mockFoo.someMethod()).times(n).andReturn(someValue);
// then run test
但如果你有其他方法可以这样做,请不要犹豫,在这里发布你的答案。
答案 2 :(得分:0)
您也可以使用此代码。
<?xml version="1.0" encoding="UTF-8" ?><xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml"/>
<xsl:template match="photoUrls|tags">
<xsl:copy-of select="node()"/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:transform>