XSLT를 사용하여 구성 변형을 적용하고 있습니다. 존재하지 않으면 요소를 추가하거나 존재하는 경우 요소를 덮어 쓰려고합니다.XSLT를 사용하여 요소를 추가하거나 교체하는 방법
원하는 결과 :
<foo>
<bar value="baz" />
</foo>
나는 두 입력
<foo>
<bar value="123" />
</foo>
및
<foo>
</foo>
XSLT를 사용하여 구성 변형을 적용하고 있습니다. 존재하지 않으면 요소를 추가하거나 존재하는 경우 요소를 덮어 쓰려고합니다.XSLT를 사용하여 요소를 추가하거나 교체하는 방법
원하는 결과 :
<foo>
<bar value="baz" />
</foo>
나는 두 입력
<foo>
<bar value="123" />
</foo>
및
<foo>
</foo>
이 변환이 출력해야하는 데 사용할 수있는 어떤 템플릿 :
을<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="foo/bar/@value[.='123']">
<xsl:attribute name="value">baz</xsl:attribute>
</xsl:template>
<xsl:template match="foo[not(bar)]">
<foo>
<bar value="baz"/>
</foo>
</xsl:template>
</xsl:stylesheet>
제 제공된 XML 문서에 도포했을 때
<foo>
<bar value="123" />
</foo>
가 원하는 정확한 결과 생산 : 제 제공된 XML 문서에 적용
<foo>
<bar value="baz"/>
</foo>
:
<foo>
</foo>
또한 올바른 결과 인가 생성됩니다. identity rule의 올바른 사용과 오버라이드 (override) :
설명.
.NET을 사용하고 있습니까? 그렇다면이 설정 변환을 위해 특히 고려해야 할 사항을 고려할 수 있습니다. MS 직원 Sayed Ibrahim Hashim은 모든 VS 프로젝트에 대한 웹 구성 변환 인 SlowCheetah을 만들었습니다.
여러분이 개 시나리오
는 될 :<foo>
<bar xdt:Transform="Replace" value="123" />
</foo>
<foo xdt:Transform="Replace">
</foo>
XSLT 조금 자세한 IMO. Hansleman는 여기에서 찾을 수 있습니다 다른 변환에 대한 그것에 post
문서를 가지고 http://go.microsoft.com/fwlink/?LinkId=214134 SlowCheetah 확장이 추가
프로젝트에 복사 할 수있는 대상은 자기가 코드 플렉스에
을 포함 만들려면 또한 exe로 사용하거나 Transform Config 코드에서 사용하려는 경우 간단한 프로젝트입니다.
추신. Tom van Orbit One hier;)
안녕하세요, Tom, 불행히도 실제 변환이 수행되는 방법을 제어 할 수 없습니다. –
CMS 냄새가납니다. :) – buckley
SlowCheetah 사용에 동의합니다! –
좀 더 일반적인 방법이 있습니까? 내가 추가하는 요소는 예제보다 조금 복잡합니다. 속성을 기반으로하지 않고 요소 이름을 기반으로 하위 요소를 포함하는 요소를 어떻게 대체합니까? –
@MelGerats : 모든 것이 가능합니다. 이 질문을 잘 정의하고 새로운 질문을하십시오. 나는 대답하게되어 기쁠거야. –