>
<STEP-ProductInformation ExportTime="2018-01-29 12:45:47" ExportContext="fr_FR" ContextID="defaultcontext" WorkspaceID="Approved" 
UseContextLocale="true">
  <Qualifiers>
    <Qualifier ID="Qualifier root">
      <DimensionPointLink DimensionPointID="Qualifier root"/>
    </Qualifier>
    <Qualifier ID="AllCountries">
       <DimensionPointLink DimensionPointID="AllCountries"/>
    </Qualifier>
    <Qualifier ID="std.lang.all">
      <DimensionPointLink DimensionPointID="std.lang.all"/>
    </Qualifier>
    <Qualifier ID="de">
      <DimensionPointLink DimensionPointID="de"/>
    </Qualifier>
    <Qualifier ID="DE">
      <DimensionPointLink DimensionPointID="DE"/>
    </Qualifier>
    <Qualifier ID="fr">
      <DimensionPointLink DimensionPointID="fr"/>
    </Qualifier>
    <Qualifier ID="FR">
      <DimensionPointLink DimensionPointID="FR"/>
    </Qualifier>
  </Qualifiers>
  <Classifications>
    <Classification ID="Level3_1234" UserTypeID="TEST" ParentID="Level2_1234">
  <Name ContextID="de_DE" QualifierID="de" Changed="true">CHANGE TRANS EXP</Name>      <Name ContextID="fr_FR" QualifierID="de" 
Changed="true">CHANGE TRANS EXP</Name>      <MetaData>
<Value AttributeID="ATTR" ContextID="de_DE" QualifierID="de" Changed="true">TEST</Value>
<Value AttributeID="ATTR" ContextID="de_DE" QualifierID="de" Changed="true">TEST</Value>
      </MetaData>
    </Classification>
   </Classifications>
</STEP-ProductInformation>

현재 다음과 같이 변경하려고합니다 :

위의 예제 XML에서 나는 찾고있다

<올>
  • "ParentID"값을 무시하십시오 (노드에서 찾을 수 있음)
  • "WorkspaceID"값을 무시하십시오 (노드에서 찾을 수 있음)
  • Translation_Status = UpToDate
  • 라는 각 노드에 다른 값을 추가하십시오.

    다음 XSLT를 사용하여 "contextID = de_De"를 사용하여 "Name"및 "Value"속성 값을 이미 제외 할 수 있습니다.

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
            <xsl:template match="Name[@ContextID='de_DE']"></xsl:template>
        <xsl:template match="Value[@ContextID='de_DE']"></xsl:template>
    </xsl:stylesheet>
    
    

    이제 XSLT 스타일 시트에 포인트 1, 2 및 3을 추가하는 것이 이상적입니다.

    어떤 도움이라도 대단히 감사하겠습니다!

    • 답변 # 1

      Value 라는 하위 요소를 추가하려면   Classification 에  요소를 사용하면 템플릿을 추가 할 수 있습니다

      <xsl:template match="Classification">
        <xsl:copy>
           <xsl:apply-templates select="@* | node()"/>
           <Value AttributeID="Translation_Status" ContextID="de_DE" QualifierID="de">UpToDate</Value>
        </xsl:copy>
      </xsl:template>
      
      

      기존 스타일 시트에.

      주석에서 이미 지적했듯이 특정 노드를 제거하려면 일치하는 빈 템플릿을 추가하여 ParentID 를 제거하십시오.   Classification 의 속성  추가

      <xsl:template match="Classification/@ParentID"/>
      
      

    관련 자료

  • 이전 c++ - 복잡한 반환 유형에 대해 명명 된 반환 값 최적화에 의존 할 수 있습니까?
  • 다음 node.js - 구성 파일에서 빠른 라우팅