소프트웨어는 리소스의 개별 항목을 parameter로 명명한다.
소프트웨어는 parameter를 tree 구조를 차용하여 하위의 parameter를 포함하는 node와 value를포함하는 leaf로 구분한다. 그리고 리소스 파일로 관리하기 위해 다음과 같이 xml 파일 형식을 이용한다:
<node_name attribute=”attribute_value”> <leaf_name attribute=”attribute_value”>value</leaf_name> </node_name> |
위에서, node_name은 node 리소스의 이름이며, 사용가능한 attribute는 다음과 같다:
Table: Node parameter attributes and their values
No. | Attribute | Value |
---|---|---|
1 | size | 리소스가 배열인 경우, 크기를 나타낸다. 디폴트는 1이다. |
2 | index | 리소스가 배열인 경우, 특정 인덱스를 표시한다. 디폴트는 -1이다. |
3 | node | 리소스가 node임을 표시한다. |
4 | merge_insert | merge_insert가 true인 경우, node 리소스 이름이 같더라도 추가한다. |
5 | merge_replace | merge_replace가 true인 경우, node 리소스에서, 같은 이름을 가진 다른 node 리소스를 덮어씀. |
6 | combine_guard | combine_guard의 값을 리소스 이름으로 가지는 하위 leaf 리소스 값이 같은 경우, 리소스를 합침. |
leaf_name은 leaf 리소스 이름이며, 사용가능한 attribute는 다음과 같다:
Table: Leaf parameter attributes and their values
No. | Attribute | Value |
---|---|---|
1 | size | 리소스가 배열인 경우, 크기를 나타낸다. 디폴트는 1이다. |
2 | type | leaf 리소스인 경우 value 타입을 표시한다. 지원하는 타입은 다음과 같다: bool, char, short, int, int64, double, string |
3 | precision | type이 double인 경우, double을 string으로 변환할 경우 소수점 이하의 수를 표시한다. 디폴트는 6이다. |
4 | nls | type이 string인 경우, 다국어로 변환할 지를 표시한다. 디폴트는 false이다. |
5 | no_delimiter | value는 single value일 수도 있으며 multiple values일 수도 있다. multiple values인 경우 ‘;’를 이용하여 value를 구분하는데, no_delimiter가 true이면, ‘;’를 value 구분자로 사용하지 않는다. 디폴트는 false이다. |
6 | no_esc_char | type이 string인 경우, ‘\’는 escape 문자로 사용된다. no_esc_char가 true이면 ‘\’를 값으로 처리한다. 디폴트는 false이다. |
7 | dirty | 값이 변경되었는지를 나타낸다. 디폴트는 false이다. |
다음의 리소스 파일을 예를 들면,
<root> <a> <b size = “3”> <d1 type=”int”>100</d1> <d2 type=”bool”>true</d2> </b> <c node=”true”/> <g type=”int”>200;300</g> </a> <e> <f size=”2” type=”string”/> </e> </root> |
소프트웨어는 상기 리소스 파일을 다음과 같이 트리구조로 변환한다:
Figure: Parameter tree

소프트웨어는 ‘.’를 사용하여 리소스를 지정한다. 예를 들면 다음과 같다: root.a.b.0.d1
상기 리소스 파일을 저장하면 다음과 같이 xml 파일로 저장된다:
<root> <a> <b index=”0”> <d1 type=”int”>100</d1> <d2 type=”bool”>true</d2> </b> <b index=”1”> <d1 type=”int”>100</d1> <d2 type=”bool”>true</d2> </b> <b index=”2”> <d1 type=”int”>100</d1> <d2 type=”bool”>true</d2> </b> <c node=”true”/> <g type=”int”>200;300</g> </a> <e> <f index=”0” type=”string”/> <f index=”1” type=”string”/> </e> </root> |
소프트웨어는 [GoF]의 composite 패턴을 활용하여 다음과 같이 parameter 클래스를 구현한다:
Figure: Parameter classes
