Properly mark up multiple person using schema.org microdata
Microdata / Schema.org

Your use of Microdata and the Schema.org vocabulary is fine.

To specify multiple directors, you have to provide multiple director properties, which your loop seems to achieve:

&lt;span itemprop="director" itemscope itemtype="https://schema.org/Person"&gt;…&lt;/span&gt;
&lt;span itemprop="director" itemscope itemtype="https://schema.org/Person"&gt;…&lt;/span&gt;
&lt;span itemprop="director" itemscope itemtype="https://schema.org/Person"&gt;…&lt;/span&gt;


To specify a URL value, you have to use a suitable link element (with href or src attribute), like a, link, img etc. So your use of the a element achieves this.

I prefer using http Schema.org URIs (reasons why), but using https is fine, too.

HTML

Is this h3 really the heading for a section of content? If yes, your markup is fine. But then you might want to add a textual delimiter (like ,) to separate the conductor names.

If the section should just specify the conductors, and there is no other content under its scope, the h3 should just be something like "Conducted by", with the list of conductors under its scope:

&lt;h3&gt;Conducted by&lt;/h3&gt;

&lt;ul&gt;
  &lt;li itemprop="director" itemscope itemtype="https://schema.org/Person"&gt;…&lt;/li&gt;
  &lt;li itemprop="director" itemscope itemtype="https://schema.org/Person"&gt;…&lt;/li&gt;
  &lt;li itemprop="director" itemscope itemtype="https://schema.org/Person"&gt;…&lt;/li&gt;
&lt;/ul&gt;


Headings should not be used for content just because this content is important. h1-h6 don’t represent important content, they represent "headings for their sections". There is typically no case where you should have a heading without any content in its section.