누구든지 이것으로 나에게 길드를 주실 수 있습니까? 하위 콘텐츠를 기반으로 특정 태그를 찾고 상위 태그와 콘텐츠를 제거하고 새 콘텐츠를 추가하려고 하는데 답변을 찾을 수 없습니다. 내 XML은 다음과 같습니다.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<app>
<displayname>Admin</displayname>
<filter>
<filtername>accesslog</filtername>
<filterclass>com.filter.accesslog</filterclass>
</filter>
<filter>
<filtername>ServerHealthCheckFilter</filtername>
<filterclass>com.filter.ServerHealthCheckFilter</filterclass>
</filter>
</app>
내가 원하는 것은 블록 <filtername>accesslog</filtername>
에 존재하는 것을 검색하는 것입니다 <filter>
. 만약 존재한다면 <filter>
상위 블록 전체를 삭제 <filtername>accesslog</filtername>
하고 새 콘텐츠를 추가하고 싶습니다. 결과는 다음과 같습니다.
<displayname>Admin</displayname>
<filter>
<filtername>accesslog</filtername>
<filterclass>com.logclient.filter.accesslog</filterclass>
<initparam>
<param-name>logClientName</param-name>
<param-value>com.logging.AccessLogImpl</param-value>
</initparam>
</filter>
<filter>
<filtername>ServerHealthCheckFilter</filtername>
<filterclass>com.filter.ServerHealthCheckFilter</filterclass>
</filter>
콘텐츠를 먼저 삭제하기 위해 첫 번째 xsl을 시도하고 있습니다. 여기있어:
XML.xsl 수정
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output
method = "xml"
version = "1.0"
encoding = "ISO-8859-1"
omit-xml-declaration = "yes"
doctype-public = "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"
indent = "yes"/>
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="filter[filter-name = 'accesslog']"/>
</xsl:stylesheet>
오류가 발생합니다.
modifyxml.xsl:8: parser error : error parsing attribute name
"http://java.sun.com/dtd/web-app_2_3.dtd"
^
modifyxml.xsl:8: parser error : attributes construct error
"http://java.sun.com/dtd/web-app_2_3.dtd"
^
modifyxml.xsl:8: parser error : Couldn't find end of Start Tag output line 2
"http://java.sun.com/dtd/web-app_2_3.dtd"
^
답변1
쉘 스크립트를 사용하여 XML을 구문 분석하려고 하면 안 됩니다. 와 같은 목적으로 만들어진 도구를 찾으십시오 xsltproc
.